Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ClientContainer
- {
- int identifier;
- int kills;
- int deads;
- int teamkills;
- int suicides;
- bool dead;
- uint64 timeDied;
- }
- enum MessageIDs
- {
- MESSAGE_ID_GAME_START,
- MESSAGE_ID_GAME_END,
- MESSAGE_ID_PLAYER_DIED
- }
- ClientContainer[] clients(32);
- void Init()
- {
- for(int i = 0;i<32;i++)
- {
- clients[i].identifier = -1;
- }
- }
- void Update()
- {
- for(int i = 0;i<32;i++)
- {
- if(clients[i].identifier != -1)
- {
- if(clients[i].dead)
- {
- Client@ client = GetClient(clients[i].identifier);
- if(clients[i].timeDied+30000 >= GetTime())
- {
- clients[i].dead = false;
- SpawnPlayer(client);
- }
- }
- }
- }
- }
- void Cleanup()
- {
- }
- void PlayerJoined(const Client@ client)
- {
- int freeSpace = -1;
- for(int i = 0;i<32;i++)
- {
- if(clients[i].identifier == -1)
- {
- freeSpace = i;
- break;
- }
- }
- clients[freeSpace].identifier = client.identifier;
- clients[freeSpace].kills = 0;
- clients[freeSpace].deads = 0;
- clients[freeSpace].teamkills = 0;
- clients[freeSpace].dead = false;
- BitStream stream;
- stream.WriteID(MESSAGE_ID_GAME_START);
- network.Send(@stream, client.address);
- }
- void PlayerLeft(const Client@ client)
- {
- int id = -1;
- for(int i = 0;i<32;i++)
- {
- if(clients[i].identifier == client.identifier)
- {
- id = i;
- break;
- }
- }
- clients[id].identifier = -1;
- }
- ClientContainer@ GetClientContainer(const Client@ client)
- {
- for(int i = 0;i<32;i++)
- {
- if(clients[i].identifier == client.identifier)
- return @clients[i];
- }
- return @ClientContainer();
- }
- Client@ GetClient(int identifier)
- {
- for(int i = 0;i<systemClients.size();i++)
- {
- if(systemClients[i].identifier == identifier)
- return systemClients[i];
- }
- return @Client();
- }
- void PlayerDied(const Client@ client, const Client@ killer)
- {
- ClientContainer@ clientContainer = GetClientContainer(client);
- ClientContainer@ killerContainer = GetClientContainer(killer);
- if(client.identifier == killer.identifier)
- {
- print("Player '");
- print(client.username);
- print("' commited suicide.\n");
- clientContainer.suicides++;
- clientContainer.deads++;
- }else{
- print("Player '");
- print(killer.username);
- if(client.team == killer.team)
- print("' teamkilled '");
- else
- print("' killed '");
- print(client.username);
- print("'.\n");
- if(client.team == killer.team)
- killerContainer.teamkills++;
- clientContainer.deads++;
- killerContainer.kills++;
- }
- clientContainer.dead = true;
- clientContainer.timeDied = GetTime();
- BitStream stream;
- stream.WriteID(MESSAGE_ID_PLAYER_DIED);
- stream.WriteInt(client.identifier);
- stream.WriteInt(killer.identifier);
- network.Send(@stream, UnassignedSystemAddress);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement