/[james]/t2matchlog/logpositiondata.cs
ViewVC logotype

Contents of /t2matchlog/logpositiondata.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 36 - (show annotations) (download)
Mon Nov 24 23:57:14 2003 UTC (20 years, 5 months ago) by james
File size: 6296 byte(s)
Initial import.

1 ////////////////////////////////////////////////////////////////////////////////
2 // logpositiondata.cs
3 ////////////////////////////////////////////////////////////////////////////////
4
5 // all global variable and functions are prefixed logpos_
6
7 new fileObject("logpos_file");
8
9 package t2matchlog {
10
11 ////////////////////////////////////////////////////////////////////////////////
12
13 function DefaultGame::startMatch(%game)
14 {
15 $logpos_flag_count = 0;
16
17 %file = "positiondata/" @ $missionSequence @ "_" @ $CurrentMissionType @
18 "_" @ $currentMission @ "_";
19 %i = 0;
20 while (isFile(%file @ %i))
21 %i++;
22 logpos_file.openForWrite(%file @ %i);
23
24 logpos_file.writeLine($CurrentMission);
25 logpos_file.writeLine($CurrentMissionType);
26 logpos_file.writeLine($MissionDisplayName);
27 logpos_file.writeLine($MissionTypeDisplayName);
28 logpos_file.writeLine(MissionArea.area);
29 logpos_dump_landmarks(MissionGroup);
30 logpos_file.writeLine("");
31
32 for (%ci = 0; %ci != ClientGroup.getCount(); %ci++) {
33 %client = ClientGroup.getObject(%ci);
34 if (%client.player) {
35 %name = stripChars(detag(getTaggedString(%client.name)),
36 "\cp\co\c6\c7\c8\c9");
37 logpos_file.writeLine("S " @ %client SPC
38 %client.player.team SPC %name);
39 }
40 }
41
42 $logpos_vehicle_count = 0;
43 $logpos_gameover = false;
44 schedule(1000, 0, logpos_write_position_data);
45
46 Parent::startMatch(%game);
47 }
48
49 ////////////////////////////////////////////////////////////////////////////////
50
51 function DefaultGame::gameOver(%game)
52 {
53 for (%ci = 0; %ci != ClientGroup.getCount(); %ci++) {
54 %client = ClientGroup.getObject(%ci);
55 logpos_file.writeLine("L " @ %client SPC %client.score);
56 }
57 for (%team = 1; %team <= %game.numTeams; %team++)
58 logpos_file.writeLine("Z " @ %team SPC $TeamScore[%team]);
59 logpos_file.close();
60 $logpos_gameover = true;
61
62 Parent::gameOver(%game);
63 }
64
65 ////////////////////////////////////////////////////////////////////////////////
66
67 function logpos_write_position_data()
68 {
69 if ($logpos_gameover)
70 return;
71
72 // flags
73 for (%i = 0; %i != $logpos_flag_count; %i++)
74 {
75 %flag = $logpos_flag[%i];
76 if (%flag.carrier $= "")
77 logpos_file.writeLine("F " @ %flag.team SPC %flag.position);
78 else
79 logpos_file.writeLine("F " @ %flag.team SPC %flag.carrier.client);
80 }
81
82 // players
83 for (%ci = 0; %ci != ClientGroup.getCount(); %ci++)
84 {
85 %client = ClientGroup.getObject(%ci);
86 if (!%client.player)
87 continue;
88 %vehicle = %client.player.getObjectMount();
89 %seat = "";
90 if (%client.player.isPilot()) { %seat = "p"; }
91 if (%client.player.isWeaponOperator()) { %seat = "w"; }
92 %data = %client.player.position SPC %vehicle SPC %seat;
93 logpos_file.writeLine(%client SPC %data);
94 }
95
96 // vehicles
97 for (%i = 0; %i != $logpos_vehicle_count; %i++) {
98 %vehicle = $logpos_vehicle[%i];
99 if (%vehicle)
100 logpos_file.writeLine(%vehicle SPC %vehicle.position);
101 }
102
103 // terminate each set of position coordinates with a blank line
104 logpos_file.writeLine("");
105
106 schedule(1000, 0, logpos_write_position_data);
107 }
108
109 ////////////////////////////////////////////////////////////////////////////////
110
111 function logpos_dump_landmarks(%group)
112 {
113 for (%i = 0; %i < %group.getCount(); %i++)
114 {
115 %obj = %group.getObject(%i);
116 %type = %obj.getClassName();
117
118 if (%type $= "SimGroup")
119 {
120 logpos_dump_landmarks(%obj);
121 }
122 else if (%type $= "Item" && %obj.dataBlock $= "Flag")
123 {
124 $logpos_flag[$logpos_flag_count] = %obj;
125 $logpos_flag_count++;
126 }
127 else if (%obj.team !$= "")
128 {
129 %data = %type SPC %obj.dataBlock SPC %obj.getName();
130 %data = %data SPC %obj.position SPC %obj.name;
131 logpos_file.writeLine(%obj.team SPC %data);
132 }
133 }
134 }
135
136 ////////////////////////////////////////////////////////////////////////////////
137
138 function serverCmdSuicide(%client)
139 {
140 logpos_file.writeLine("serverCmdSuicide " @ %client);
141 Parent::serverCmdSuicide(%client);
142 }
143
144 function vehicleListAdd(%blockName, %obj)
145 {
146 logpos_file.writeLine("V " @ %obj SPC %obj.team SPC %blockName);
147 $logpos_vehicle[$logpos_vehicle_count] = %obj;
148 $logpos_vehicle_count++;
149 Parent::vehicleListAdd(%blockName, %obj);
150 }
151
152 function vehicleListRemove(%data, %obj)
153 {
154 logpos_file.writeLine("W " @ %obj);
155 for (%i = 0; %i != $logpos_vehicle_count; %i++)
156 if ($logpos_vehicle[%i] == %obj)
157 $logpos_vehicle[%i] = 0;
158 Parent::vehicleListRemove(%data, %obj);
159 }
160
161 function DefaultGame::playerSpawned(%game, %player)
162 {
163 %name = stripChars(detag(getTaggedString(%player.client.name)),
164 "\cp\co\c6\c7\c8\c9");
165 logpos_file.writeLine("S " @ %player.client SPC %player.team SPC %name);
166 Parent::playerSpawned(%game, %player);
167 }
168
169 function DefaultGame::onClientKilled(%game, %clVictim, %clKiller, %damageType,
170 %implement, %damageLocation)
171 {
172 logpos_file.writeLine("K " @ %clVictim SPC %clKiller SPC %damageType);
173 Parent::onClientKilled(%game, %clVictim, %clKiller, %damageType,
174 %implement, %damageLocation);
175 }
176
177 function DefaultGame::onClientDamaged(%game, %clVictim, %clAttacker,
178 %damageType, %sourceObject)
179 {
180 logpos_file.writeLine("D " @ %clVictim SPC %clAttacker SPC %damageType);
181 Parent::onClientDamaged(%game, %clVictim, %clAttacker, %damageType,
182 %sourceObject);
183 }
184
185 function DefaultGame::onClientLeaveGame(%game, %client)
186 {
187 logpos_file.writeLine("L " @ %client SPC %client.score);
188 Parent::onClientLeaveGame(%game, %client);
189 }
190
191 function Player::setArmor(%this, %size)
192 {
193 logpos_file.writeLine("A " @ %this.client SPC %size);
194 Parent::setArmor(%this, %size);
195 }
196
197 function ShapeBase::setInventory(%this, %data, %value, %force)
198 {
199 logpos_file.writeLine("I " @ %this.client SPC %data.getName() SPC %value);
200 Parent::setInventory(%this, %data, %value, %force);
201 }
202
203 function AIDeployObject(%client, %object)
204 {
205 logpos_file.writeLine("O " @ %object SPC %client SPC
206 %object.getDataBlock().getName() SPC %object.position);
207 Parent::AIDeployObject(%client, %object);
208 }
209
210 function ShapeBaseData::onDestroyed(%data, %obj, %prevstate)
211 {
212 logpos_file.writeLine("P " @ %obj SPC %obj.lastDamagedBy);
213 Parent::onDestroyed(%data, %obj, %prevstate);
214 }
215
216 };
217
218 activatePackage(t2matchlog);
219
220 ////////////////////////////////////////////////////////////////////////////////
221

  ViewVC Help
Powered by ViewVC 1.1.26