- fpackf(tfile, "Bi", numplayers);
- if (numplayers < maxplayers)
- for (int j = 1; j < numplayers; j++) {
- fpackf(tfile, "Bi Bi Bf Bf Bf Bi Bi Bf Bb Bf", player[j].whichskin, player[j].creature,
- player[j].coords.x, player[j].coords.y, player[j].coords.z,
- player[j].num_weapons, player[j].howactive, player[j].scale, player[j].immobile, player[j].yaw);
- if (player[j].num_weapons < 5)
- for (int k = 0; k < player[j].num_weapons; k++)
- fpackf(tfile, "Bi", weapons[player[j].weaponids[k]].getType());
- if (player[j].numwaypoints < 30) {
- fpackf(tfile, "Bi", player[j].numwaypoints);
- for (int k = 0; k < player[j].numwaypoints; k++) {
- fpackf(tfile, "Bf", player[j].waypoints[k].x);
- fpackf(tfile, "Bf", player[j].waypoints[k].y);
- fpackf(tfile, "Bf", player[j].waypoints[k].z);
- fpackf(tfile, "Bi", player[j].waypointtype[k]);
- }
- fpackf(tfile, "Bi", player[j].waypoint);
- } else {
- player[j].numwaypoints = 0;
- player[j].waypoint = 0;
- fpackf(tfile, "Bi Bi Bi", player[j].numwaypoints, player[j].waypoint, player[j].waypoint);
- }
-
- fpackf(tfile, "Bf Bf Bf", player[j].armorhead, player[j].armorhigh, player[j].armorlow);
- fpackf(tfile, "Bf Bf Bf", player[j].protectionhead, player[j].protectionhigh, player[j].protectionlow);
- fpackf(tfile, "Bf Bf Bf", player[j].metalhead, player[j].metalhigh, player[j].metallow);
- fpackf(tfile, "Bf Bf", player[j].power, player[j].speedmult);
-
- float headprop, bodyprop, armprop, legprop;
- if (player[j].creature == wolftype) {
- headprop = player[j].proportionhead.x / 1.1;
- bodyprop = player[j].proportionbody.x / 1.1;
- armprop = player[j].proportionarms.x / 1.1;
- legprop = player[j].proportionlegs.x / 1.1;
- } else if (player[j].creature == rabbittype) {
- headprop = player[j].proportionhead.x / 1.2;
- bodyprop = player[j].proportionbody.x / 1.05;
- armprop = player[j].proportionarms.x / 1.00;
- legprop = player[j].proportionlegs.x / 1.1;
- }
-
- fpackf(tfile, "Bf Bf Bf Bf", headprop, bodyprop, armprop, legprop);
-
- fpackf(tfile, "Bi", player[j].numclothes);
- if (player[j].numclothes)
- for (int k = 0; k < player[j].numclothes; k++) {
- int templength;
- templength = strlen(player[j].clothes[k]);
- fpackf(tfile, "Bi", templength);
- for (int l = 0; l < templength; l++)
- fpackf(tfile, "Bb", player[j].clothes[k][l]);
- fpackf(tfile, "Bf Bf Bf", player[j].clothestintr[k], player[j].clothestintg[k], player[j].clothestintb[k]);
- }
+ fpackf(tfile, "Bi", Person::players.size());
+ if (Person::players.size() > maxplayers) {
+ cout << "Warning: this level contains more players than allowed" << endl;
+ }
+ for (int j = 1; j < Person::players.size(); j++) {
+ fpackf(tfile, "Bi Bi Bf Bf Bf Bi Bi Bf Bb Bf", Person::players[j]->whichskin, Person::players[j]->creature,
+ Person::players[j]->coords.x, Person::players[j]->coords.y, Person::players[j]->coords.z,
+ Person::players[j]->num_weapons, Person::players[j]->howactive, Person::players[j]->scale, Person::players[j]->immobile, Person::players[j]->yaw);
+ if (Person::players[j]->num_weapons < 5)
+ for (int k = 0; k < Person::players[j]->num_weapons; k++)
+ fpackf(tfile, "Bi", weapons[Person::players[j]->weaponids[k]].getType());
+ if (Person::players[j]->numwaypoints < 30) {
+ fpackf(tfile, "Bi", Person::players[j]->numwaypoints);
+ for (int k = 0; k < Person::players[j]->numwaypoints; k++) {
+ fpackf(tfile, "Bf", Person::players[j]->waypoints[k].x);
+ fpackf(tfile, "Bf", Person::players[j]->waypoints[k].y);
+ fpackf(tfile, "Bf", Person::players[j]->waypoints[k].z);
+ fpackf(tfile, "Bi", Person::players[j]->waypointtype[k]);
+ }
+ fpackf(tfile, "Bi", Person::players[j]->waypoint);
+ } else {
+ Person::players[j]->numwaypoints = 0;
+ Person::players[j]->waypoint = 0;
+ fpackf(tfile, "Bi Bi Bi", Person::players[j]->numwaypoints, Person::players[j]->waypoint, Person::players[j]->waypoint);