2 Teams balancer
#1

Here my code:

Код:
#include <a_samp>



#define Round_MaxTime 360000
#define TEAM_HUMAN 0
#define TEAM_ZOMBIE 1
#define COLOR_HUMAN 0x6495EDAA
#define COLOR_ZOMBIE 0x275511FF
#define WEAPON1_HUMAN 24
#define WEAPON2_HUMAN 25
#define WEAPON3_HUMAN 31
#define WEAPON1_ZOMBIE 4
#define WEAPON2_ZOMBIE 0
#define WEAPON3_ZOMBIE 0
#define COLOR_RED 0xFF0000AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_GREEN 0x66CC99AA



enum aInfo
{
	HumansCount,
	ZombiesCount,
	HumansKills,
	ZombiesKills,
	ID
};
enum pInfo
{
	TotalCount,
	Team
};



new Arena[aInfo];
new PlayerCount;
new PlayerTeam[MAX_PLAYERS];
new Text[256];
new Float:OldHP[MAX_PLAYERS];



forward AnnounceWinner();
forward ChangeRound();
forward OnPlayerUpdate(playerid);



main()
{
	print("|||||||||||||||||||||||||||||||||||||||||||||||||||||||");
	print("|      ZOMBIEMOD - G0D4V1D & GhOsT       |");
	print("| Probably you've never seen a gamemod like this one |");
	print("|   Enjoy this fucking great Zombie's gamemod   |");
	print("|||||||||||||||||||||||||||||||||||||||||||||||||||||||");
}



stock HumanTeam(playerid)
{
	SendClientMessage(playerid,COLOR_HUMAN,"Save the society!");
	GivePlayerWeapon(playerid,WEAPON1_HUMAN,9999);
	GivePlayerWeapon(playerid,WEAPON2_HUMAN,9999);
	GivePlayerWeapon(playerid,WEAPON3_HUMAN,9999);
	SetPlayerColor(playerid,COLOR_HUMAN);
	SetPlayerTeam(playerid,0);
	SetPlayerArmour(playerid,100);
	SetPlayerSkin(playerid,285);
}



stock ZombieTeam(playerid)
{
	ResetPlayerWeapons(playerid);
	SetPlayerArmour(playerid,0);
	SetPlayerSkin(playerid,162);
	SendClientMessage(playerid,COLOR_ZOMBIE,"Eat some brains!");
	GivePlayerWeapon(playerid,WEAPON1_ZOMBIE,9999);
	GivePlayerWeapon(playerid,WEAPON2_ZOMBIE,9999);
	GivePlayerWeapon(playerid,WEAPON3_ZOMBIE,9999);
	SetPlayerColor(playerid,COLOR_ZOMBIE);
	SetPlayerTeam(playerid,1);
	SetPlayerHealth(playerid,150);
	TogglePlayerControllable(playerid,1);
}



public OnGameModeInit()
{
	AddPlayerClass(285,0.0,0.0,5.0,0.0,0,0,0,0,0,0);
	AddPlayerClass(162,0.0,0.0,5.0,0.0,0,0,0,0,0,0);
 	SetGameModeText("ZombieMod b1");
	SetWorldTime(0);
	SetNameTagDrawDistance(5);
	SetTeamCount(2);
	ShowNameTags(0);
	ShowPlayerMarkers(1);
	UsePlayerPedAnims();
	AllowInteriorWeapons(1);
  DisableInteriorEnterExits();
  Arena[ID] = 0;
	SetTimer("AnnounceWinner",360000,1);
	return 1;
}



public OnPlayerConnect(playerid)
{
	SendClientMessage(playerid,COLOR_YELLOW,"Welcome to: ZombieMod b1!!");
	SendClientMessage(playerid,COLOR_YELLOW,"Type /learn for some help.");
	SendClientMessage(playerid,COLOR_RED,"Creators: G0D4V1D & GhOsT.");
	PlayerCount ++;
	return 1;
}



public OnPlayerDisconnect(playerid)
{
	PlayerCount --;
	return 1;
}



public OnPlayerSpawn(playerid)
{
	if(PlayerTeam[playerid] == 0)
	{
		HumanTeam(playerid);
		SetPlayerTeam(playerid,0);
	}
	else if(PlayerTeam[playerid] == 1)
	{
		ZombieTeam(playerid);
		SetPlayerTeam(playerid,1);
	}
	switch(Arena[ID])
	{
	  case 0:
	  {
	    if(PlayerTeam[playerid] == 0)
	  		{
	      SetPlayerPos(playerid,1300.0236,-790.1140,1084.0078);
	      SetPlayerFacingAngle(playerid,0.3154);
				SetPlayerInterior(playerid,5);
	    }
			if(PlayerTeam[playerid] == 1)
			{
			  SetPlayerPos(playerid,1266.4395,-780.0988,1091.9063);
			  SetPlayerFacingAngle(playerid,269.7846);
			  SetPlayerInterior(playerid,5);
			}
		}
		case 1:
	  {
	    if(PlayerTeam[playerid] == 0)
	    {
	      SetPlayerPos(playerid,2220.3972,-1151.4685,1025.7969);
	      SetPlayerFacingAngle(playerid,269.3734);
	      SetPlayerInterior(playerid,15);
	    }
			if(PlayerTeam[playerid] == 1)
			{
			  SetPlayerPos(playerid,2193.5583,-1141.1141,1029.7969);
			  SetPlayerFacingAngle(playerid,178.7957);
			  SetPlayerInterior(playerid,15);
			}
		}
		case 2:
	  {
	    if(PlayerTeam[playerid] == 0)
	    {
	      SetPlayerPos(playerid,2346.9094,-1172.8066,1031.9766);
	      SetPlayerFacingAngle(playerid,85.3327);
	      SetPlayerInterior(playerid,5);
	    }
			if(PlayerTeam[playerid] == 1)
			{
			  SetPlayerPos(playerid,2349.6428,-1181.0731,1027.9766);
			  SetPlayerFacingAngle(playerid,87.8066);
        SetPlayerInterior(playerid,5);
			}
		}
		case 3:
	  {
	    if(PlayerTeam[playerid] == 0)
	    {
	      SetPlayerPos(playerid,366.8517,215.5397,1008.3828);
	      SetPlayerFacingAngle(playerid,178.3608);
        SetPlayerInterior(playerid,3);
		  }
			if(PlayerTeam[playerid] == 1)
			{
				SetPlayerPos(playerid,348.3492,162.2359,1025.7891);
				SetPlayerFacingAngle(playerid,269.5417);
        SetPlayerInterior(playerid,3);
			}
		}
	}
	return 1;
}



public OnPlayerDeath(playerid)
{
	if(PlayerTeam[playerid] == 0)
	{
		Arena[ZombiesKills] ++;
	}
	else if(PlayerTeam[playerid] == 1)
	{
	  Arena[HumansKills] ++;
	}
	switch(Arena[ZombiesKills])
	{
	  case 5: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 5");
	  case 10: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 10");
	  case 15: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 15");
	  case 20: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 20");
	  case 25: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 25");
	  case 30: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 30");
	  case 35: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 35");
	  case 40: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 40");
	  case 45: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 45");
	  case 50:
		{
			SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 50");
			AnnounceWinner();
		}
	}
	switch(Arena[HumansKills])
	{
		case 5: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 5");
	  case 10: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 10");
	  case 15: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 15");
	  case 20: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 20");
	  case 25: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 25");
	  case 30: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 30");
	  case 35: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 35");
	  case 40: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 40");
	  case 45: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 45");
	  case 50:
		{
			SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 50");
			AnnounceWinner();
		}
	}
	return 1;
}



public OnPlayerRequestClass(playerid,classid)
{
	SetPlayerPos(playerid,299.9177,2741.7598,42.9127);
	SetPlayerFacingAngle(playerid,198.9686);
	SetPlayerCameraPos(playerid,306.3498,2727.6697,37.0493);
	SetPlayerCameraLookAt(playerid,299.9177,2741.7598,42.9127);
	if(classid == 0)
	{
		PlayerTeam[playerid] = 0;
		SetPlayerTeam(playerid,0);
	}
	else if(classid == 1)
	{
		PlayerTeam[playerid] = 1;
		SetPlayerTeam(playerid,1);
	}
	return 1;
}



public AnnounceWinner()
{
	if(Arena[ZombiesKills] > Arena[HumansKills])
	{
	  GameTextForAll("~r~ZOMBIES~w~ WON~y~ ]]",3000,5);
		format(Text,256,"Infected humans: %d | Died zombies: %d",
		Arena[ZombiesKills],Arena[HumansKills]);
		SendClientMessageToAll(COLOR_YELLOW,Text);
	}
	if(Arena[ZombiesKills] < Arena[HumansKills])
	{
	  GameTextForAll("~b~HUMANS~w~ WON~y~ ]]",3000,5);
		format(Text,256,"Died zombies: %d | Infected humans: %d",
		Arena[HumansKills],Arena[ZombiesKills]);
		SendClientMessageToAll(COLOR_YELLOW,Text);
	}
  if(Arena[ZombiesKills] == Arena[HumansKills])
	{
		GameTextForAll("~y~ DRAW",3000,5);
		format(Text,256,"Both teams had %d deaths.",
		Arena[ZombiesKills]);
		SendClientMessageToAll(COLOR_YELLOW,Text);
	}
	Arena[ID] ++;
	SetTimer("ChangeRound",10000,0);
	SendClientMessageToAll(COLOR_RED,"Wait 10 seconds till next round starts!");
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	  SetPlayerCameraPos(i,-1438.0342,1751.5375,45.6543);
		SetPlayerCameraLookAt(i,-1736.0754,1132.5067,45.6543);
	  SetPlayerInterior(i,0);
	}
	return 1;
}



public ChangeRound()
{
	Arena[ZombiesKills] = 0;
	Arena[HumansKills] = 0;
  for(new i = 0; i < MAX_PLAYERS; i++)
	{
		SpawnPlayer(i);
		switch(Arena[ID])
	  {
	    case 0:
	    {
	      SetPlayerInterior(i,5);
	    }
	    case 1:
	    {
	      SetPlayerInterior(i,15);
	    }
	    case 2:
	    {
	      SetPlayerInterior(i,5);
	    }
	    case 3:
	    {
	      SetPlayerInterior(i,3);
	      Arena[ID] = 0;
	    }
		}
	}
	return 1;
}



public OnPlayerUpdate(playerid)
{
 	new Float:NewHP;
	GetPlayerArmour(playerid,NewHP);
	if(NewHP < OldHP[playerid])
	{
		new Skin = GetPlayerSkin(playerid);
		if(Skin == 285)
		{
			ZombieTeam(playerid);
			Arena[ZombiesKills] ++;
      switch(Arena[ZombiesKills])
			{
	  		case 5: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 5");
	  		case 10: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 10");
	  		case 15: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 15");
	  			case 20: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 20");
	  		case 25: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 25");
	  		case 30: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 30");
	  		case 35: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 35");
	  		case 40: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 40");
	  		case 45: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 45");
	  		case 50:
				{
					SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 50");
					AnnounceWinner();
				}
			}
		}
	}
 	OldHP[playerid] = NewHP;
	return 1;
}



public OnPlayerCommandText(playerid,cmdtext[])
{
	if(strcmp(cmdtext,"/learn",true)==0)
	{
	  SendClientMessage(playerid,COLOR_YELLOW,"This is gamemod is based on Human VS Zombies.");
	  SendClientMessage(playerid,COLOR_YELLOW,"Zombies should use knife to infect humans.");
	  SendClientMessage(playerid,COLOR_YELLOW,"Humans should run from and kill the zombies.");
	  SendClientMessage(playerid,COLOR_RED,"[WARNING] ZOMBIES HAVE 150 HP, NOT 100.");
	  SendClientMessage(playerid,COLOR_GREEN,"Brought to you by G0D4V1D and GhOsT!");
	}
	return 1;
}
Reply
#2

Here is my team balancer:

Код:
	{
  new Count1, Count2;
  for(new i = 0; i < GetMaxPlayers(); i++)
  {
    if (gTeam[playerid] == TEAM_ROBBERS) Count1++;
    else if (gTeam[playerid] == TEAM_MILI) Count2++;
  }
  if ((Count1 > Count2) && gTeam[playerid] == TEAM_MILI)
  {
    SendClientMessage(playerid,COLOUR_RED, "[BALANCER] Balancing teams. Choose Another Team");
    return 0;
  }
  else if ((Count2 > Count1) && gTeam[playerid] == TEAM_ROBBERS)
  {
    SendClientMessage(playerid,COLOUR_RED, "[BALANCER] Balancing teams. Choose Another Team");
    return 0;
  }
  return 1;
	}
"gTeam" to "PlayerTeam"

You can just edit the teams (:
Reply
#3

where i put it?
Reply
#4

OnPlayerRequestSpawn
Reply
#5

does not work for me. All in one team. no way to spawn in the other team.
Can you help me via teamviewer? I will make you admin in my server (Hosted list)
Reply
#6

Show me your code.

And i don't need admin :b
Reply
#7

Код:
	{
  new Count1, Count2;
  for(new i = 0; i < GetMaxPlayers(); i++)
  {
    if (gTeam[playerid] == TEAM_ZOMBIE) Count1++;
    else if (gTeam[playerid] == TEAM_HUMAN) Count2++;
  }
  if ((Count1 > Count2) && gTeam[playerid] == TEAM_ZOMBIE)
  {
    SendClientMessage(playerid,COLOUR_RED, "[BALANCER] Balancing teams. Choose Another Team");
    return 0;
  }
  else if ((Count2 > Count1) && gTeam[playerid] == TEAM_HUMAN)
  {
    SendClientMessage(playerid,COLOUR_RED, "[BALANCER] Balancing teams. Choose Another Team");
    return 0;
  }
  return 1;
	}
I changed MILI and ROBBERS to HUMAN and ZOMBIE so that should work,


#define TEAM_HUMAN 0
#define TEAM_ZOMBIE 1

public OnPlayerSpawn(playerid)
{


if(PlayerTeam[playerid] == 0)
{
HumanTeam(playerid);
SetPlayerTeam(playerid,0);
}
else if(PlayerTeam[playerid] == 1)
{
ZombieTeam(playerid);
SetPlayerTeam(playerid,1);
}


Код:
public OnPlayerRequestClass(playerid,classid)
{	SetPlayerPos(playerid,299.9177,2741.7598,42.9127);
	SetPlayerFacingAngle(playerid,198.9686);
	SetPlayerCameraPos(playerid,306.3498,2727.6697,37.0493);
	SetPlayerCameraLookAt(playerid,299.9177,2741.7598,42.9127);
	if(GetPlayerSkin(playerid) == [ZombieSkinID])
	{
		PlayerTeam[playerid] = 0;
		SetPlayerTeam(playerid,0);
        return 1;
	}
	else if(etPlayerSkin(playerid) == [HumanSkinID])
	{
		PlayerTeam[playerid] = 1;
		SetPlayerTeam(playerid,1);
        return 1;
	}
	return 1;
}
is also a simplified version and IT should work
Reply
#8

http://forum.sa-mp.com/index.php?topic=97161.0 my code's based on this GM.
Reply
#9

Tried my code? If it doesnt work just use search...
Reply
#10

Used it. I posted all the GM, can you help me now?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)