1 void(string s) SV_ParseClientCommand =
\r
3 local float f, f2, args;
\r
6 local entity navcurrent, navother;
\r
15 navcurrent = self.current_navnode;
\r
16 navother = self.other_navnode;
\r
22 s1 = strcat(s1, " ");
\r
23 s1 = strcat(s1, argv(3));
\r
24 s1 = strcat(s1, " ");
\r
25 s1 = strcat(s1, argv(4));
\r
27 setorigin(navcurrent, v);
\r
30 sprint(self, "No selection\n");
\r
32 else if (c == "resize")
\r
34 if (!ResizeNavNode(navcurrent, self.axis, stof(argv(2))))
\r
35 sprint(self, "No selection\n");
\r
37 else if (c == "save")
\r
42 else if (c == "load")
\r
44 else if (c == "teleport")
\r
48 if (navcurrent.sflags & S_TELEPORT)
\r
49 navcurrent.sflags = navcurrent.sflags - (navcurrent.sflags & S_TELEPORT);
\r
51 navcurrent.sflags = navcurrent.sflags | S_TELEPORT;
\r
54 sprint(self, "No selection\n");
\r
56 else if (c == "door")
\r
60 if (navcurrent.sflags & S_DOOR)
\r
61 navcurrent.sflags = navcurrent.sflags - (navcurrent.sflags & S_DOOR);
\r
63 navcurrent.sflags = navcurrent.sflags | S_DOOR;
\r
66 sprint(self, "No selection\n");
\r
68 else if (c == "touch")
\r
72 if (navcurrent.sflags & S_TOUCH)
\r
73 navcurrent.sflags = navcurrent.sflags - (navcurrent.sflags & S_TOUCH);
\r
75 navcurrent.sflags = navcurrent.sflags | S_TOUCH;
\r
78 sprint(self, "No selection\n");
\r
80 else if (c == "nolink")
\r
84 LFlagChange(navcurrent, f, LF_NOLINK);
\r
86 else if (c == "nowalk")
\r
90 LFlagChange(navcurrent, f, LF_NOWALK);
\r
92 else if (c == "bad")
\r
96 LFlagChange(navcurrent, f, LF_BAD);
\r
98 else if (c == "bigdrop")
\r
102 LFlagChange(navcurrent, f, LF_BIGDROP);
\r
104 else if (c == "remote")
\r
105 RemoteLinkHandling(navcurrent, navother);
\r
107 clientcommand(self, s);
\r
110 clientcommand(self, s);
\r
117 if (self.other_navnode)
\r
118 self.other_navnode.colormod = '0 0 0';
\r
120 if (self.current_navnode)
\r
122 self.current_navnode.colormod = '0 0 0';
\r
123 self.current_navnode.scale = 1;
\r
124 e = self.current_navnode.plane_chain;
\r
127 e.effects = EF_NODRAW;
\r
129 while (e != self.current_navnode.plane_chain)
\r
131 e.effects = EF_NODRAW;
\r
135 if (self.current_navnode.link0)
\r
137 self.current_navnode.link0.effects = 0;
\r
138 self.current_navnode.link0.frame = 20;
\r
139 if (self.current_navnode.link1)
\r
141 self.current_navnode.link1.effects = 0;
\r
142 self.current_navnode.link1.frame = 20;
\r
143 if (self.current_navnode.link2)
\r
145 self.current_navnode.link2.effects = 0;
\r
146 self.current_navnode.link2.frame = 20;
\r
147 if (self.current_navnode.link3)
\r
149 self.current_navnode.link3.effects = 0;
\r
150 self.current_navnode.link3.frame = 20;
\r
151 if (self.current_navnode.link4)
\r
153 self.current_navnode.link4.effects = 0;
\r
154 self.current_navnode.link4.frame = 20;
\r
155 if (self.current_navnode.link5)
\r
157 self.current_navnode.link5.effects = 0;
\r
158 self.current_navnode.link5.frame = 20;
\r
159 if (self.current_navnode.link6)
\r
161 self.current_navnode.link6.effects = 0;
\r
162 self.current_navnode.link6.frame = 20;
\r
163 if (self.current_navnode.link7)
\r
165 self.current_navnode.link7.effects = 0;
\r
166 self.current_navnode.link7.frame = 20;
\r
167 if (self.current_navnode.link8)
\r
169 self.current_navnode.link8.effects = 0;
\r
170 self.current_navnode.link8.frame = 20;
\r
171 if (self.current_navnode.link9)
\r
173 self.current_navnode.link9.effects = 0;
\r
174 self.current_navnode.link9.frame = 20;
\r
175 if (self.current_navnode.link10)
\r
177 self.current_navnode.link10.effects = 0;
\r
178 self.current_navnode.link10.frame = 20;
\r
179 if (self.current_navnode.link11)
\r
181 self.current_navnode.link11.effects = 0;
\r
182 self.current_navnode.link11.frame = 20;
\r
183 if (self.current_navnode.link12)
\r
185 self.current_navnode.link12.effects = 0;
\r
186 self.current_navnode.link12.frame = 20;
\r
187 if (self.current_navnode.link13)
\r
189 self.current_navnode.link13.effects = 0;
\r
190 self.current_navnode.link13.frame = 20;
\r
191 if (self.current_navnode.link14)
\r
193 self.current_navnode.link14.effects = 0;
\r
194 self.current_navnode.link14.frame = 20;
\r
195 if (self.current_navnode.link15)
\r
197 self.current_navnode.link15.effects = 0;
\r
198 self.current_navnode.link15.frame = 20;
\r
199 if (self.current_navnode.link16)
\r
201 self.current_navnode.link16.effects = 0;
\r
202 self.current_navnode.link16.frame = 20;
\r
203 if (self.current_navnode.link17)
\r
205 self.current_navnode.link17.effects = 0;
\r
206 self.current_navnode.link17.frame = 20;
\r
207 if (self.current_navnode.link18)
\r
209 self.current_navnode.link18.effects = 0;
\r
210 self.current_navnode.link18.frame = 20;
\r
211 if (self.current_navnode.link19)
\r
213 self.current_navnode.link19.effects = 0;
\r
214 self.current_navnode.link19.frame = 20;
\r
238 void() SwitchNavNode =
\r
241 self.current_navnode = FindCurrentNavNode(self.current_navnode, self.origin, self.selmode);
\r
242 if (!self.current_navnode)
\r
243 self.current_navnode = FindCurrentNavNode(world, self.origin, self.selmode);
\r
246 void(float match) SwitchAxis =
\r
250 self.axis = self.axis + 1;
\r
254 else if (match == 0)
\r
256 else if (match == 1)
\r
258 else if (match == 2)
\r
262 void(float i) ImpulseCommands =
\r
268 if (self.confirm && i >= 1 && i <= 9)
\r
275 if (self.button3 & !self.button4)
\r
277 if (self.axis == 0)
\r
278 f = self.current_navnode.origin_x + self.current_navnode.maxs_x;
\r
279 else if (self.axis == 1)
\r
280 f = self.current_navnode.origin_y + self.current_navnode.maxs_y;
\r
281 else if (self.axis == 2)
\r
282 f = self.current_navnode.origin_z + self.current_navnode.maxs_z;
\r
283 f = f + self.gridsize;
\r
284 ResizeNavNode(self.current_navnode, self.axis, f);
\r
286 else if (self.button4 & !self.button3)
\r
288 if (self.current_clippoint)
\r
290 e = self.current_clippoint;
\r
291 v = self.current_clippoint.origin;
\r
295 e = self.current_navnode;
\r
296 v = self.current_navnode.origin;
\r
298 if (self.axis == 0)
\r
299 v_x = v_x + self.gridsize;
\r
300 else if (self.axis == 1)
\r
301 v_y = v_y + self.gridsize;
\r
302 else if (self.axis == 2)
\r
303 v_z = v_z + self.gridsize;
\r
306 else if (self.button3 & self.button4)
\r
308 if (self.current_clippoint)
\r
310 if (self.current_clippoint == self.clippoint1)
\r
312 if (self.clippoint2)
\r
313 self.current_clippoint = self.clippoint2;
\r
315 self.current_clippoint = self.clippoint1;
\r
317 else if (self.current_clippoint == self.clippoint2)
\r
319 if (self.clippoint3)
\r
320 self.current_clippoint = self.clippoint3;
\r
322 self.current_clippoint = self.clippoint1;
\r
324 else if (self.current_clippoint == self.clippoint3)
\r
325 self.current_clippoint = self.clippoint1;
\r
328 self.current_plane = self.current_plane.plane_next;
\r
331 self.gridsize = self.gridsize * 2;
\r
335 if (self.button3 & !self.button4)
\r
337 if (self.axis == 0)
\r
338 f = self.current_navnode.origin_x + self.current_navnode.maxs_x;
\r
339 else if (self.axis == 1)
\r
340 f = self.current_navnode.origin_y + self.current_navnode.maxs_y;
\r
341 else if (self.axis == 2)
\r
342 f = self.current_navnode.origin_z + self.current_navnode.maxs_z;
\r
343 f = f - self.gridsize;
\r
344 ResizeNavNode(self.current_navnode, self.axis, f);
\r
346 else if (self.button4 & !self.button3)
\r
348 if (self.current_clippoint)
\r
350 e = self.current_clippoint;
\r
351 v = self.current_clippoint.origin;
\r
355 e = self.current_navnode;
\r
356 v = self.current_navnode.origin;
\r
358 if (self.axis == 0)
\r
359 v_x = v_x - self.gridsize;
\r
360 else if (self.axis == 1)
\r
361 v_y = v_y - self.gridsize;
\r
362 else if (self.axis == 2)
\r
363 v_z = v_z - self.gridsize;
\r
366 else if (self.button3 & self.button4)
\r
368 if (self.current_clippoint)
\r
370 if (self.current_clippoint == self.clippoint1)
\r
372 if (self.clippoint3)
\r
373 self.current_clippoint = self.clippoint3;
\r
374 else if (self.clippoint2)
\r
375 self.current_clippoint = self.clippoint2;
\r
377 self.current_clippoint = self.clippoint1;
\r
379 else if (self.current_clippoint == self.clippoint2)
\r
380 self.current_clippoint = self.clippoint1;
\r
381 else if (self.current_clippoint == self.clippoint3)
\r
382 self.current_clippoint = self.clippoint2;
\r
385 self.current_plane = self.current_plane.plane_prev;
\r
389 self.gridsize = self.gridsize * 0.5;
\r
390 if (self.gridsize < 1)
\r
394 else if (i == 110) // Spawns new navnode
\r
396 if (!self.lockselection)
\r
398 v = SnapToGrid(self.origin);
\r
399 e = SpawnNavNode(v, '-32 -32 -32', '32 32 32');
\r
404 self.current_navnode = e;
\r
405 self.other_navnode = e;
\r
406 self.lockselection = TRUE;
\r
411 else if (i == 111) // Deletes current navnode (FIXME: better solution? most think remote functions checking for variables in cases such as this is ugly)
\r
413 if (self.current_navnode)
\r
415 self.confirm = C_DELETE_NAVNODE;
\r
416 self.lockselection = TRUE;
\r
419 else if (i == 112) // Deletes current plane (FIXME: better solution? most think remote functions checking for variables in cases such as this is ugly)
\r
421 if (self.current_plane)
\r
423 self.confirm = C_DELETE_PLANE;
\r
424 self.lockselection = TRUE;
\r
427 else if (i == 120) // Switches navnode in case of overlap
\r
429 if (!self.lockselection)
\r
430 if (self.selmode == M_OVERLAP)
\r
433 else if (i == 121) // Switches selection mode
\r
435 if (self.selmode == M_OVERLAP)
\r
436 self.selmode = M_CLOSEST;
\r
437 else if (self.selmode == M_CLOSEST)
\r
438 self.selmode = M_OVERLAP;
\r
440 else if (i == 122) // Cycles through axis
\r
442 else if (i == 123) // Switches to X axis
\r
444 else if (i == 124) // Switches to Y axis
\r
446 else if (i == 125) // Switches to Z axis
\r
450 void() ClientKill = {};
\r
452 void() ClientConnect =
\r
454 bprint (self.netname);
\r
455 bprint (" has connected\n");
\r
458 void() ClientDisconnect =
\r
460 bprint (self.netname);
\r
461 bprint (" has disconnected\n");
\r
464 float BT_LIGHTNING = 0;
\r
467 void(float beamtype, vector bmins, vector bmaxs) BeamBox =
\r
469 local vector v1, v2;
\r
474 if (beamtype == BT_LIGHTNING)
\r
475 te_lightning1(world, v1, v2);
\r
477 te_beam(world, v1, v2);
\r
481 if (beamtype == BT_LIGHTNING)
\r
482 te_lightning1(world, v1, v2);
\r
484 te_beam(world, v1, v2);
\r
488 if (beamtype == BT_LIGHTNING)
\r
489 te_lightning1(world, v1, v2);
\r
491 te_beam(world, v1, v2);
\r
495 if (beamtype == BT_LIGHTNING)
\r
496 te_lightning1(world, v1, v2);
\r
498 te_beam(world, v1, v2);
\r
502 if (beamtype == BT_LIGHTNING)
\r
503 te_lightning1(world, v1, v2);
\r
505 te_beam(world, v1, v2);
\r
509 if (beamtype == BT_LIGHTNING)
\r
510 te_lightning1(world, v1, v2);
\r
512 te_beam(world, v1, v2);
\r
518 if (beamtype == BT_LIGHTNING)
\r
519 te_lightning1(world, v1, v2);
\r
521 te_beam(world, v1, v2);
\r
527 if (beamtype == BT_LIGHTNING)
\r
528 te_lightning1(world, v1, v2);
\r
530 te_beam(world, v1, v2);
\r
536 if (beamtype == BT_LIGHTNING)
\r
537 te_lightning1(world, v1, v2);
\r
539 te_beam(world, v1, v2);
\r
545 if (beamtype == BT_LIGHTNING)
\r
546 te_lightning1(world, v1, v2);
\r
548 te_beam(world, v1, v2);
\r
553 if (beamtype == BT_LIGHTNING)
\r
554 te_lightning1(world, v1, v2);
\r
556 te_beam(world, v1, v2);
\r
561 if (beamtype == BT_LIGHTNING)
\r
562 te_lightning1(world, v1, v2);
\r
564 te_beam(world, v1, v2);
\r
567 void() PlayerPreThink =
\r
570 local vector v, edge1, edge2, org, tvec, intonav; // FIXME
\r
572 local entity e, navcurrent, navother, delplane;
\r
574 if (self.selmode == M_OVERLAP)
\r
576 if (self.current_navnode)
\r
577 if (!self.lockselection)
\r
578 if (!boxesoverlap(self.origin, self.origin, self.current_navnode.origin + self.current_navnode.mins, self.current_navnode.origin + self.current_navnode.maxs))
\r
581 self.other_navnode = world;
\r
582 self.current_navnode = world;
\r
585 else if (self.selmode == M_CLOSEST)
\r
587 if (self.current_navnode)
\r
588 if (!self.lockselection)
\r
590 e = FindCurrentNavNode(world, self.origin, self.selmode);
\r
591 if (e != self.current_navnode)
\r
594 self.other_navnode = world;
\r
595 self.current_navnode = world;
\r
600 if (self.current_navnode)
\r
601 navcurrent = self.current_navnode;
\r
604 self.current_plane = world;
\r
605 navcurrent = self.current_navnode = FindCurrentNavNode(world, self.origin, self.selmode);
\r
608 navother = FindCurrentNavNode(world, self.origin, self.selmode);
\r
609 if (self.other_navnode)
\r
610 if (navother != self.other_navnode)
\r
612 if (self.other_navnode != self.current_navnode)
\r
613 self.other_navnode.colormod = '0 0 0';
\r
615 self.other_navnode = navother;
\r
619 if (!(self.buttonflag & B_FLAG0))
\r
623 if (self.button3 & !self.button4)
\r
625 makevectors(self.v_angle);
\r
626 traceline(self.origin, self.origin + v_forward*8192, TRUE, world);
\r
627 v = SnapToGrid(trace_endpos);
\r
628 if (self.axis == 0)
\r
629 ResizeNavNode(navcurrent, self.axis, v_x);
\r
630 else if (self.axis == 1)
\r
631 ResizeNavNode(navcurrent, self.axis, v_y);
\r
632 else if (self.axis == 2)
\r
633 ResizeNavNode(navcurrent, self.axis, v_z);
\r
635 else if (self.button4 & !self.button3)
\r
637 makevectors(self.v_angle);
\r
638 traceline(self.origin, self.origin + v_forward*8192, TRUE, world);
\r
639 if (self.current_clippoint)
\r
640 e = self.current_clippoint;
\r
643 v = SnapToGrid(trace_endpos);
\r
646 else if (self.button3 & self.button4)
\r
648 if (self.clippoint3)
\r
650 edge1=self.clippoint1.origin-self.clippoint2.origin;
\r
651 edge2=self.clippoint3.origin-self.clippoint2.origin;
\r
652 v_x=edge1_y*edge2_z-edge1_z*edge2_y;
\r
653 v_y=edge1_z*edge2_x-edge1_x*edge2_z;
\r
654 v_z=edge1_x*edge2_y-edge1_y*edge2_x;
\r
656 org = (((self.clippoint1.origin + self.clippoint2.origin)*0.5) + self.clippoint3.origin)*0.5;
\r
657 RemoveClippoints();
\r
661 makevectors(self.v_angle);
\r
662 traceline(self.origin, self.origin + v_forward*8192, TRUE, world);
\r
663 v = trace_plane_normal;
\r
664 org = trace_endpos;
\r
666 f = rint(v * (navcurrent.origin - org));
\r
668 e = navcurrent.plane_chain;
\r
671 if (e.mangle == v*-1)
\r
675 while (e != navcurrent.plane_chain)
\r
677 if (e.mangle == v*-1)
\r
685 RemovePlane(navcurrent, delplane);
\r
686 self.current_plane = world;
\r
689 AddPlane(navcurrent, v, f);
\r
693 makevectors (self.v_angle);
\r
695 traceline(self.origin, self.origin + v_forward*8192, TRUE, self);
\r
696 f = pointcontents(trace_endpos);
\r
697 if (f != CONTENT_SOLID || f != CONTENT_SKY)
\r
698 setorigin(self, trace_endpos + v*8);
\r
702 self.buttonflag = self.buttonflag | B_FLAG0;
\r
705 self.buttonflag = self.buttonflag - (self.buttonflag & B_FLAG0);
\r
709 if (!(self.buttonflag & B_FLAG2))
\r
713 if (self.button3 & !self.button4)
\r
715 v = SnapToGrid(self.origin);
\r
716 ResizeNavNode(navcurrent, 0, v_x);
\r
717 ResizeNavNode(navcurrent, 1, v_y);
\r
718 ResizeNavNode(navcurrent, 2, v_z);
\r
720 else if (self.button4 & !self.button3)
\r
722 if (self.current_clippoint)
\r
723 e = self.current_clippoint;
\r
726 v = SnapToGrid(self.origin);
\r
729 else if (self.button3 & self.button4)
\r
732 if (self.lockselection)
\r
734 v = SnapToGrid(self.origin);
\r
738 else if (!self.confirm)
\r
740 if (self.lockselection)
\r
742 RemoveClippoints();
\r
743 self.lockselection = FALSE;
\r
746 self.lockselection = TRUE;
\r
750 self.buttonflag = self.buttonflag | B_FLAG2;
\r
753 self.buttonflag = self.buttonflag - (self.buttonflag & B_FLAG2);
\r
755 if (time >= self.ltntime + 0.15)
\r
757 self.ltntime = time;
\r
760 navcurrent.scale = 0.2;
\r
761 if (!self.current_plane)
\r
762 self.current_plane = navcurrent.plane_chain;
\r
763 if (self.lockselection)
\r
765 if (self.clippoint1)
\r
767 if (!self.current_clippoint)
\r
768 self.current_clippoint = self.clippoint1;
\r
769 if (self.current_clippoint == self.clippoint1)
\r
771 self.clippoint1.colormod = '1 0 0';
\r
772 if (self.clippoint2)
\r
774 self.clippoint2.colormod = '0 0 0';
\r
775 if (self.clippoint3)
\r
776 self.clippoint3.colormod = '0 0 0';
\r
779 else if (self.current_clippoint == self.clippoint2)
\r
781 self.clippoint2.colormod = '1 0 0';
\r
782 if (self.clippoint1)
\r
784 self.clippoint1.colormod = '0 0 0';
\r
785 if (self.clippoint3)
\r
786 self.clippoint3.colormod = '0 0 0';
\r
789 else if (self.current_clippoint == self.clippoint3)
\r
791 self.clippoint3.colormod = '1 0 0';
\r
792 if (self.clippoint1)
\r
794 self.clippoint1.colormod = '0 0 0';
\r
795 if (self.clippoint2)
\r
796 self.clippoint2.colormod = '0 0 0';
\r
800 navcurrent.colormod = '0.25 0.25 1';
\r
801 BeamBox(BT_LIGHTNING, navcurrent.origin + navcurrent.mins, navcurrent.origin + navcurrent.maxs);
\r
802 e = navcurrent.plane_chain;
\r
805 if (self.current_plane == e)
\r
809 e.effects = EF_NODEPTHTEST | EF_ADDITIVE | EF_FULLBRIGHT;
\r
811 while (e != navcurrent.plane_chain)
\r
813 if (self.current_plane == e)
\r
817 e.effects = EF_NODEPTHTEST | EF_ADDITIVE | EF_FULLBRIGHT;
\r
821 if (navother != navcurrent)
\r
823 navother.colormod = '1 0 0';
\r
824 BeamBox(BT_BEAM, navother.origin + navother.mins, navother.origin + navother.maxs);
\r
829 navcurrent.colormod = '1 0 0';
\r
830 BeamBox(BT_BEAM, navcurrent.origin + navcurrent.mins, navcurrent.origin + navcurrent.maxs);
\r
831 e = navcurrent.plane_chain;
\r
834 if (self.current_plane == e)
\r
838 e.effects = EF_NODEPTHTEST | EF_ADDITIVE | EF_FULLBRIGHT;
\r
840 while (e != navcurrent.plane_chain)
\r
842 if (self.current_plane == e)
\r
846 e.effects = EF_NODEPTHTEST | EF_ADDITIVE | EF_FULLBRIGHT;
\r
851 e = navcurrent.plane_chain;
\r
854 if (e.mangle_x < 0)
\r
855 tvec_x = self.origin_x + self.mins_x;
\r
857 tvec_x = self.origin_x + self.maxs_x;
\r
858 if (e.mangle_y < 0)
\r
859 tvec_y = self.origin_y + self.mins_y;
\r
861 tvec_y = self.origin_y + self.maxs_y;
\r
862 if (e.mangle_z < 0)
\r
863 tvec_z = self.origin_z + self.mins_z;
\r
865 tvec_z = self.origin_z + self.maxs_z;
\r
866 f = (tvec * e.mangle) - ((navcurrent.origin + (e.delay * e.mangle)) * e.mangle);
\r
868 intonav = intonav + e.mangle*-1;
\r
870 while (e != navcurrent.plane_chain)
\r
872 if (e.mangle_x < 0)
\r
873 tvec_x = self.origin_x + self.mins_x;
\r
875 tvec_x = self.origin_x + self.maxs_x;
\r
876 if (e.mangle_y < 0)
\r
877 tvec_y = self.origin_y + self.mins_y;
\r
879 tvec_y = self.origin_y + self.maxs_y;
\r
880 if (e.mangle_z < 0)
\r
881 tvec_z = self.origin_z + self.mins_z;
\r
883 tvec_z = self.origin_z + self.maxs_z;
\r
884 f = (tvec * e.mangle) - ((navcurrent.origin + (e.delay * e.mangle)) * e.mangle);
\r
886 intonav = intonav + e.mangle*-1;
\r
890 intonav = normalize(intonav);
\r
891 // te_lightning1(self, self.origin, self.origin + intonav*200);
\r
892 if (navcurrent.link0)
\r
894 navcurrent.link0.effects = EF_NODEPTHTEST;
\r
895 navcurrent.link0.frame = 0;
\r
896 if (navcurrent.lflags0 & LF_REMOTE)
\r
897 navcurrent.link0.frame = navcurrent.link0.frame + 21;
\r
898 if (navcurrent.link1)
\r
900 navcurrent.link1.effects = EF_NODEPTHTEST;
\r
901 navcurrent.link1.frame = 1;
\r
902 if (navcurrent.lflags1 & LF_REMOTE)
\r
903 navcurrent.link1.frame = navcurrent.link1.frame + 21;
\r
904 if (navcurrent.link2)
\r
906 navcurrent.link2.effects = EF_NODEPTHTEST;
\r
907 navcurrent.link2.frame = 2;
\r
908 if (navcurrent.lflags2 & LF_REMOTE)
\r
909 navcurrent.link2.frame = navcurrent.link2.frame + 21;
\r
910 if (navcurrent.link3)
\r
912 navcurrent.link3.effects = EF_NODEPTHTEST;
\r
913 navcurrent.link3.frame = 3;
\r
914 if (navcurrent.lflags3 & LF_REMOTE)
\r
915 navcurrent.link3.frame = navcurrent.link3.frame + 21;
\r
916 if (navcurrent.link4)
\r
918 navcurrent.link4.effects = EF_NODEPTHTEST;
\r
919 navcurrent.link4.frame = 4;
\r
920 if (navcurrent.lflags4 & LF_REMOTE)
\r
921 navcurrent.link4.frame = navcurrent.link4.frame + 21;
\r
922 if (navcurrent.link5)
\r
924 navcurrent.link5.effects = EF_NODEPTHTEST;
\r
925 navcurrent.link5.frame = 5;
\r
926 if (navcurrent.lflags5 & LF_REMOTE)
\r
927 navcurrent.link5.frame = navcurrent.link5.frame + 21;
\r
928 if (navcurrent.link6)
\r
930 navcurrent.link6.effects = EF_NODEPTHTEST;
\r
931 navcurrent.link6.frame = 6;
\r
932 if (navcurrent.lflags6 & LF_REMOTE)
\r
933 navcurrent.link6.frame = navcurrent.link6.frame + 21;
\r
934 if (navcurrent.link7)
\r
936 navcurrent.link7.effects = EF_NODEPTHTEST;
\r
937 navcurrent.link7.frame = 7;
\r
938 if (navcurrent.lflags7 & LF_REMOTE)
\r
939 navcurrent.link7.frame = navcurrent.link7.frame + 21;
\r
940 if (navcurrent.link8)
\r
942 navcurrent.link8.effects = EF_NODEPTHTEST;
\r
943 navcurrent.link8.frame = 8;
\r
944 if (navcurrent.lflags8 & LF_REMOTE)
\r
945 navcurrent.link8.frame = navcurrent.link8.frame + 21;
\r
946 if (navcurrent.link9)
\r
948 navcurrent.link9.effects = EF_NODEPTHTEST;
\r
949 navcurrent.link9.frame = 9;
\r
950 if (navcurrent.lflags9 & LF_REMOTE)
\r
951 navcurrent.link9.frame = navcurrent.link9.frame + 21;
\r
952 if (navcurrent.link10)
\r
954 navcurrent.link10.effects = EF_NODEPTHTEST;
\r
955 navcurrent.link10.frame = 10;
\r
956 if (navcurrent.lflags10 & LF_REMOTE)
\r
957 navcurrent.link10.frame = navcurrent.link10.frame + 21;
\r
958 if (navcurrent.link11)
\r
960 navcurrent.link11.effects = EF_NODEPTHTEST;
\r
961 navcurrent.link11.frame = 11;
\r
962 if (navcurrent.lflags11 & LF_REMOTE)
\r
963 navcurrent.link11.frame = navcurrent.link11.frame + 21;
\r
964 if (navcurrent.link12)
\r
966 navcurrent.link12.effects = EF_NODEPTHTEST;
\r
967 navcurrent.link12.frame = 12;
\r
968 if (navcurrent.lflags12 & LF_REMOTE)
\r
969 navcurrent.link12.frame = navcurrent.link12.frame + 21;
\r
970 if (navcurrent.link13)
\r
972 navcurrent.link13.effects = EF_NODEPTHTEST;
\r
973 navcurrent.link13.frame = 13;
\r
974 if (navcurrent.lflags13 & LF_REMOTE)
\r
975 navcurrent.link13.frame = navcurrent.link13.frame + 21;
\r
976 if (navcurrent.link14)
\r
978 navcurrent.link14.effects = EF_NODEPTHTEST;
\r
979 navcurrent.link14.frame = 14;
\r
980 if (navcurrent.lflags14 & LF_REMOTE)
\r
981 navcurrent.link14.frame = navcurrent.link14.frame + 21;
\r
982 if (navcurrent.link15)
\r
984 navcurrent.link15.effects = EF_NODEPTHTEST;
\r
985 navcurrent.link15.frame = 15;
\r
986 if (navcurrent.lflags15 & LF_REMOTE)
\r
987 navcurrent.link15.frame = navcurrent.link15.frame + 21;
\r
988 if (navcurrent.link16)
\r
990 navcurrent.link16.effects = EF_NODEPTHTEST;
\r
991 navcurrent.link16.frame = 16;
\r
992 if (navcurrent.lflags16 & LF_REMOTE)
\r
993 navcurrent.link16.frame = navcurrent.link16.frame + 21;
\r
994 if (navcurrent.link17)
\r
996 navcurrent.link17.effects = EF_NODEPTHTEST;
\r
997 navcurrent.link17.frame = 17;
\r
998 if (navcurrent.lflags17 & LF_REMOTE)
\r
999 navcurrent.link17.frame = navcurrent.link17.frame + 21;
\r
1000 if (navcurrent.link18)
\r
1002 navcurrent.link18.effects = EF_NODEPTHTEST;
\r
1003 navcurrent.link18.frame = 18;
\r
1004 if (navcurrent.lflags18 & LF_REMOTE)
\r
1005 navcurrent.link18.frame = navcurrent.link18.frame + 21;
\r
1006 if (navcurrent.link19)
\r
1008 navcurrent.link19.effects = EF_NODEPTHTEST;
\r
1009 navcurrent.link19.frame = 19;
\r
1010 if (navcurrent.lflags19 & LF_REMOTE)
\r
1011 navcurrent.link19.frame = navcurrent.link19.frame + 21;
\r
1036 void() PlayerPostThink =
\r
1041 ImpulseCommands(self.impulse);
\r
1045 void() NavOrgThink =
\r
1047 self.nextthink = time + 0.1;
\r
1049 setorigin(self, self.owner.current_navnode.origin);
\r
1052 void() PutClientInServer =
\r
1054 local entity spawn_spot;
\r
1056 spawn_spot = find (world, classname, "info_player_start");
\r
1058 spawn_spot = find (world, classname, "info_player_deathmatch");
\r
1060 self.classname = "player";
\r
1061 self.health = 100;
\r
1062 self.solid = SOLID_SLIDEBOX;
\r
1063 self.movetype = MOVETYPE_FLY;
\r
1064 self.flags = FL_CLIENT;
\r
1065 self.nextthink = time;
\r
1066 self.think = SUB_Null;
\r
1068 setorigin(self, spawn_spot.origin);
\r
1069 self.angles = spawn_spot.angles;
\r
1070 self.fixangle = TRUE;
\r
1072 // setmodel (self, "progs/bbox.mdl");
\r
1073 setmodel (self, "progs/null.spr");
\r
1074 // setsize (self, '-16 -16 -28', '16 16 28');
\r
1075 setsize (self, '0 0 0', '0 0 0');
\r
1076 self.gridsize = 8;
\r
1078 self.navorg1 = spawn();
\r
1079 setmodel(self.navorg1, "progs/org.mdl");
\r
1080 setsize(self.navorg1, '0 0 0', '0 0 0');
\r
1081 self.navorg1.effects = EF_FULLBRIGHT;
\r
1082 self.navorg1.owner = self;
\r
1083 self.navorg1.think = NavOrgThink;
\r
1084 self.navorg1.nextthink = time;
\r
1085 self.navorg2 = spawn();
\r
1086 setmodel(self.navorg2, "progs/org2.mdl");
\r
1087 setsize(self.navorg2, '0 0 0', '0 0 0');
\r
1088 self.navorg2.effects = EF_ADDITIVE | EF_FULLBRIGHT;
\r
1089 self.navorg2.owner = self;
\r
1090 self.navorg2.think = NavOrgThink;
\r
1091 self.navorg2.nextthink = time;
\r
1094 void() SV_PlayerPhysics =
\r
1096 local vector wishvel, wishdir;
\r
1097 local float wishspeed, f;
\r
1099 if (self.movetype == MOVETYPE_NONE)
\r
1102 if (self.punchangle != '0 0 0')
\r
1103 self.punchangle = self.punchangle * (1 - frametime * 3);
\r
1105 if (self.punchvector != '0 0 0')
\r
1106 self.punchvector = self.punchvector * (1 - frametime * 3);
\r
1108 if (vlen(self.movement))
\r
1110 makevectors(self.v_angle);
\r
1111 wishvel = v_forward * self.movement_x + v_right * self.movement_y + '0 0 1' * self.movement_z;
\r
1112 wishdir = normalize(wishvel);
\r
1113 wishspeed = vlen(wishvel);
\r
1114 if (wishspeed > sv_maxspeed)
\r
1115 wishspeed = sv_maxspeed;
\r
1116 f = wishspeed - (self.velocity * wishdir);
\r
1118 self.velocity = self.velocity + wishdir * min(f, sv_accelerate * frametime * wishspeed);
\r
1121 self.velocity = '0 0 0';
\r