Jump to content

Recommended Posts

Posted

Poi faza e ca nu ai voie sa faci dm :]]

Nu ai voie pe playeri sa faci dar pw politisti nu te opreste ninwni ei iti vor acorda wanted de aceea exista cop kill si cop attack in wanted list

Posted (edited)

Sugestie: La hitmani sa nu mai apara la /contracts cei care sunt pe sleep(cred ca se poate din moment ce atunci cand dai sleep nu mai apare nici factiunea,etc.). E foarte enervant sa stai sa tot ceri takehit,sau sa dai find in continu pe o lista imensa,din care doar 2-3 sunt on,resut pe sleep..

Sau sa poti sa ii omori chiar daca sunt pe sleep.

Edited by AK.Knutz
  • Upvote 5
Posted

Legat de comanda de facut event speciala o chestie destul de interesanta mi-am luat putin timp liber si m-am gandit sa o fac si sa o postez aici sa-ti usurez munca daca vrei sa o bagi:

new ec = 1;
new eventtimer = 120000;
new Event7[MAX_PLAYERS];
new EventChat[MAX_PLAYERS];
//-------------------------------------[Event Info]-----------------------------------------------------
    if(strcmp(cmd, "/event", true) == 0)
	{
		if(IsPlayerConnected(playerid))
	    {
          if (PlayerInfo[playerid][pLevel] >= 5)
		  {
            if(WantedLevel[playerid] >= 1)
            {
                SendClientMessage(playerid,COLOR_GREY,"   You can`t use this command, you are currently Wanted !");
                return 1;
            }
            if(PlayerTied[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "  you can`t use this command because you are tied!");
                return 1;
            }
            if(PlayerInfo[playerid][pMuted] == 1)
			{
				SendClientMessage(playerid, TEAM_CYAN_COLOR, "   You can't speak, you have been silenced !");
				return 1;
			}
			if(Event7[playerid] == 0)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SetPlayerColor(playerid, COLOR_ORANGE);
				format(string, sizeof(string), "{FF9900}[Event Info]{FFFFFF} %s [ID:%d] {FF9900}Face event la punctul portocaliu /w %s pentru detalii.",sendername,playerid,sendername);
				SendClientMessageToAll(COLOR_ORANGE, string);
				SendClientMessage(playerid, COLOR_WHITE, "{00A1FF}USAGE{FFFFFF}: /ec for event info");
				SetPlayerHealth(playerid, 100000);
				SetPlayerArmour(playerid, 100000);
				Event7[playerid] = 1;
				EventChat[playerid] = 3;
			}
			else if(Event7[playerid] == 1)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SetPlayerToTeamColor(playerid);
                format(string, sizeof(string), "[Event Info] %s [ID:%d] Event over !.", sendername,playerid);
				SendClientMessageToAll(COLOR_ORANGE, string);
				SetPlayerHealth(playerid, 100);
				SetPlayerArmour(playerid, 0);
				Event7[playerid] = 0;
				EventChat[playerid] = 0;
			}
		  }
		  else
          {
       	     SendClientMessage(playerid, COLOR_LIGHTGREEN, "   You must be level 5 to use this!");
		  }
		}
		return 1;
	}
//----Si =Acum event Chat
if(strcmp(cmd, "/ec", true) == 0 || strcmp(cmd, "/eventchat", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(gPlayerLogged[playerid] == 0)
	        {
	            SendClientMessage(playerid, COLOR_GREY, "   You havent logged in yet !");
	            return 1;
	        }
	        if(PlayerInfo[playerid][pLevel] < 5)
	        {
         		SendClientMessage(playerid, COLOR_LIGHTGREEN, "   You must be level 5 to use this!");
	            return 1;
	        }
	        if(PlayerInfo[playerid][pMuted] == 1)
			{
				SendClientMessage(playerid, TEAM_CYAN_COLOR, "   You can't speak, you have been silenced !");
				return 1;
			}
			if(PlayerTied[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "  you can`t use this command because you are tied!");
                return 1;
            }
			if(Event7[playerid] == 1)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				new length = strlen(cmdtext);
				while ((idx < length) && (cmdtext[idx] <= ' '))
				{
					idx++;
				}
				new offset = idx;
				new result[64];
				while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
				{
					result[idx - offset] = cmdtext[idx];
					idx++;
				}
				result[idx - offset] = EOS;
				if(!strlen(result))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "{00A1FF}USAGE{FFFFFF}: (/e)vent(c)hat [text]");
					return 1;
				}
				if(EventChat[playerid] == 0)
				{
					SendClientMessage(playerid, COLOR_GREY, "   You already sent 3 messages.");
					return 1;
				}
				if (!ec)
				{
					format(string, sizeof(string), "   Please try again later, %d seconds between Event Informations !",  (eventtimer/1000));
					SendClientMessage(playerid, COLOR_GRAD2, string);
					return 1;
				}
				EventChat[playerid] -= 1;
				format(string, sizeof(string), "[Event Chat] %s : %s", sendername, result);
				SendClientMessageToAll(COLOR_ORANGE,string);
				SetTimer("EcOn", eventtimer, 0);
				ec = 0;
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, "   You must do an event to use event chat.");
				return 1;
			}
		}
		return 1;
	}
2.Armele la mafii ar trebui modificate asa:

				else if(PlayerInfo[playerid][pMember] == 17 || PlayerInfo[playerid][pLeader] == 17)
				{
					if(PlayerToPoint(30.0, playerid,-687.75, 939.36,13.63))
                    {
                 		if(GetPlayerMoney(playerid) < 2000)
	                	{
	                    	SendClientMessage(playerid, COLOR_GREY, "** You don't have enough money !");
	                    	return 1;
	                	}
						if(PlayerInfo[playerid][pRank] == 1)
						{
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	GivePlayerMoney(playerid, -5000);
						  }
						 else if(PlayerInfo[playerid][pRank] == 2)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	    			 	 else if(PlayerInfo[playerid][pRank] == 3)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	 				 	 else if(PlayerInfo[playerid][pRank] == 4)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	
						  	GivePlayerMoney(playerid, -5000);
                        }
	     			 	else if(PlayerInfo[playerid][pRank] == 5)
					 	{
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	SafeGivePlayerWeapon(playerid, 1, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	     				 else
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	SafeGivePlayerWeapon(playerid, 1, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
					}
					else
					{
						SCM(playerid, COLOR_GRAD2, "** You are not in the HQ !");
						return 1;
					}
				}
[bine inteles ar trebui modificate coordonatele si pleader ,pmember dupa id-ul factiuni (coordonatele sunt cele de hq nu sunt bune sunt de pe sv meu de teste pe care creez)
Posted

Legat de comanda de facut event speciala o chestie destul de interesanta mi-am luat putin timp liber si m-am gandit sa o fac si sa o postez aici sa-ti usurez munca daca vrei sa o bagi:

 

new ec = 1;
new eventtimer = 120000;
new Event7[MAX_PLAYERS];
new EventChat[MAX_PLAYERS];
//-------------------------------------[Event Info]-----------------------------------------------------
    if(strcmp(cmd, "/event", true) == 0)
	{
		if(IsPlayerConnected(playerid))
	    {
          if (PlayerInfo[playerid][pLevel] >= 5)
		  {
            if(WantedLevel[playerid] >= 1)
            {
                SendClientMessage(playerid,COLOR_GREY,"   You can`t use this command, you are currently Wanted !");
                return 1;
            }
            if(PlayerTied[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "  you can`t use this command because you are tied!");
                return 1;
            }
            if(PlayerInfo[playerid][pMuted] == 1)
			{
				SendClientMessage(playerid, TEAM_CYAN_COLOR, "   You can't speak, you have been silenced !");
				return 1;
			}
			if(Event7[playerid] == 0)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SetPlayerColor(playerid, COLOR_ORANGE);
				format(string, sizeof(string), "{FF9900}[Event Info]{FFFFFF} %s [ID:%d] {FF9900}Face event la punctul portocaliu /w %s pentru detalii.",sendername,playerid,sendername);
				SendClientMessageToAll(COLOR_ORANGE, string);
				SendClientMessage(playerid, COLOR_WHITE, "{00A1FF}USAGE{FFFFFF}: /ec for event info");
				SetPlayerHealth(playerid, 100000);
				SetPlayerArmour(playerid, 100000);
				Event7[playerid] = 1;
				EventChat[playerid] = 3;
			}
			else if(Event7[playerid] == 1)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SetPlayerToTeamColor(playerid);
                format(string, sizeof(string), "[Event Info] %s [ID:%d] Event over !.", sendername,playerid);
				SendClientMessageToAll(COLOR_ORANGE, string);
				SetPlayerHealth(playerid, 100);
				SetPlayerArmour(playerid, 0);
				Event7[playerid] = 0;
				EventChat[playerid] = 0;
			}
		  }
		  else
          {
       	     SendClientMessage(playerid, COLOR_LIGHTGREEN, "   You must be level 5 to use this!");
		  }
		}
		return 1;
	}
//----Si =Acum event Chat
if(strcmp(cmd, "/ec", true) == 0 || strcmp(cmd, "/eventchat", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(gPlayerLogged[playerid] == 0)
	        {
	            SendClientMessage(playerid, COLOR_GREY, "   You havent logged in yet !");
	            return 1;
	        }
	        if(PlayerInfo[playerid][pLevel] < 5)
	        {
         		SendClientMessage(playerid, COLOR_LIGHTGREEN, "   You must be level 5 to use this!");
	            return 1;
	        }
	        if(PlayerInfo[playerid][pMuted] == 1)
			{
				SendClientMessage(playerid, TEAM_CYAN_COLOR, "   You can't speak, you have been silenced !");
				return 1;
			}
			if(PlayerTied[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "  you can`t use this command because you are tied!");
                return 1;
            }
			if(Event7[playerid] == 1)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				new length = strlen(cmdtext);
				while ((idx < length) && (cmdtext[idx] <= ' '))
				{
					idx++;
				}
				new offset = idx;
				new result[64];
				while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
				{
					result[idx - offset] = cmdtext[idx];
					idx++;
				}
				result[idx - offset] = EOS;
				if(!strlen(result))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "{00A1FF}USAGE{FFFFFF}: (/e)vent(c)hat [text]");
					return 1;
				}
				if(EventChat[playerid] == 0)
				{
					SendClientMessage(playerid, COLOR_GREY, "   You already sent 3 messages.");
					return 1;
				}
				if (!ec)
				{
					format(string, sizeof(string), "   Please try again later, %d seconds between Event Informations !",  (eventtimer/1000));
					SendClientMessage(playerid, COLOR_GRAD2, string);
					return 1;
				}
				EventChat[playerid] -= 1;
				format(string, sizeof(string), "[Event Chat] %s : %s", sendername, result);
				SendClientMessageToAll(COLOR_ORANGE,string);
				SetTimer("EcOn", eventtimer, 0);
				ec = 0;
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, "   You must do an event to use event chat.");
				return 1;
			}
		}
		return 1;
	}
2.Armele la mafii ar trebui modificate asa:

else if(PlayerInfo[playerid][pMember] == 17 || PlayerInfo[playerid][pLeader] == 17)
				{
					if(PlayerToPoint(30.0, playerid,-687.75, 939.36,13.63))
                    {
                 		if(GetPlayerMoney(playerid) < 2000)
	                	{
	                    	SendClientMessage(playerid, COLOR_GREY, "** You don't have enough money !");
	                    	return 1;
	                	}
						if(PlayerInfo[playerid][pRank] == 1)
						{
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	GivePlayerMoney(playerid, -5000);
						  }
						 else if(PlayerInfo[playerid][pRank] == 2)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	    			 	 else if(PlayerInfo[playerid][pRank] == 3)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	 				 	 else if(PlayerInfo[playerid][pRank] == 4)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	
						  	GivePlayerMoney(playerid, -5000);
                        }
	     			 	else if(PlayerInfo[playerid][pRank] == 5)
					 	{
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	SafeGivePlayerWeapon(playerid, 1, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	     				 else
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	SafeGivePlayerWeapon(playerid, 1, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
					}
					else
					{
						SCM(playerid, COLOR_GRAD2, "** You are not in the HQ !");
						return 1;
					}
				}
PRO de la mine Agente. Shadow daca le-ai baga serverul ar avea un succes enorm so mult mai indragit de catre playeri mai ales cuvtecurile si combat dhotgun la mafii.
[bine inteles ar trebui modificate coordonatele si pleader ,pmember dupa id-ul factiuni (coordonatele sunt cele de hq nu sunt bune sunt de pe sv meu de teste pe care creez)
Posted

nu ai cum sa joci biliard in sa:mp. exista un server unde poti face asta, dar.. e mult prea complicat de facut. Ma doare capu doar cand ma gandeasc la asta. Ar trebui scriptate obiecte, coliziunea obiectelor, camera.. E posibil, dar nu pe bugged. Ca n-are cine sa faca.

 

 

Te inseli , orice este posibil pe bugged , in primul rand shad si tibi au facut serverul de la 0 , si este un server foarte apreciat , populat , majoritatea suntem siguri ca shad si tibi pot face orice lucru  , pot face si asta . Gandeste-te putin ca au facut serverul de la 0 si dupa vorbeste .

 

Aici ai dreptate , up .

 

 

 

Legat de comanda de facut event speciala o chestie destul de interesanta mi-am luat putin timp liber si m-am gandit sa o fac si sa o postez aici sa-ti usurez munca daca vrei sa o bagi:

new ec = 1;
new eventtimer = 120000;
new Event7[MAX_PLAYERS];
new EventChat[MAX_PLAYERS];
//-------------------------------------[Event Info]-----------------------------------------------------
    if(strcmp(cmd, "/event", true) == 0)
	{
		if(IsPlayerConnected(playerid))
	    {
          if (PlayerInfo[playerid][pLevel] >= 5)
		  {
            if(WantedLevel[playerid] >= 1)
            {
                SendClientMessage(playerid,COLOR_GREY,"   You can`t use this command, you are currently Wanted !");
                return 1;
            }
            if(PlayerTied[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "  you can`t use this command because you are tied!");
                return 1;
            }
            if(PlayerInfo[playerid][pMuted] == 1)
			{
				SendClientMessage(playerid, TEAM_CYAN_COLOR, "   You can't speak, you have been silenced !");
				return 1;
			}
			if(Event7[playerid] == 0)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SetPlayerColor(playerid, COLOR_ORANGE);
				format(string, sizeof(string), "{FF9900}[Event Info]{FFFFFF} %s [ID:%d] {FF9900}Face event la punctul portocaliu /w %s pentru detalii.",sendername,playerid,sendername);
				SendClientMessageToAll(COLOR_ORANGE, string);
				SendClientMessage(playerid, COLOR_WHITE, "{00A1FF}USAGE{FFFFFF}: /ec for event info");
				SetPlayerHealth(playerid, 100000);
				SetPlayerArmour(playerid, 100000);
				Event7[playerid] = 1;
				EventChat[playerid] = 3;
			}
			else if(Event7[playerid] == 1)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SetPlayerToTeamColor(playerid);
                format(string, sizeof(string), "[Event Info] %s [ID:%d] Event over !.", sendername,playerid);
				SendClientMessageToAll(COLOR_ORANGE, string);
				SetPlayerHealth(playerid, 100);
				SetPlayerArmour(playerid, 0);
				Event7[playerid] = 0;
				EventChat[playerid] = 0;
			}
		  }
		  else
          {
       	     SendClientMessage(playerid, COLOR_LIGHTGREEN, "   You must be level 5 to use this!");
		  }
		}
		return 1;
	}
//----Si =Acum event Chat
if(strcmp(cmd, "/ec", true) == 0 || strcmp(cmd, "/eventchat", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(gPlayerLogged[playerid] == 0)
	        {
	            SendClientMessage(playerid, COLOR_GREY, "   You havent logged in yet !");
	            return 1;
	        }
	        if(PlayerInfo[playerid][pLevel] < 5)
	        {
         		SendClientMessage(playerid, COLOR_LIGHTGREEN, "   You must be level 5 to use this!");
	            return 1;
	        }
	        if(PlayerInfo[playerid][pMuted] == 1)
			{
				SendClientMessage(playerid, TEAM_CYAN_COLOR, "   You can't speak, you have been silenced !");
				return 1;
			}
			if(PlayerTied[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "  you can`t use this command because you are tied!");
                return 1;
            }
			if(Event7[playerid] == 1)
			{
				GetPlayerName(playerid, sendername, sizeof(sendername));
				new length = strlen(cmdtext);
				while ((idx < length) && (cmdtext[idx] <= ' '))
				{
					idx++;
				}
				new offset = idx;
				new result[64];
				while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
				{
					result[idx - offset] = cmdtext[idx];
					idx++;
				}
				result[idx - offset] = EOS;
				if(!strlen(result))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "{00A1FF}USAGE{FFFFFF}: (/e)vent(c)hat [text]");
					return 1;
				}
				if(EventChat[playerid] == 0)
				{
					SendClientMessage(playerid, COLOR_GREY, "   You already sent 3 messages.");
					return 1;
				}
				if (!ec)
				{
					format(string, sizeof(string), "   Please try again later, %d seconds between Event Informations !",  (eventtimer/1000));
					SendClientMessage(playerid, COLOR_GRAD2, string);
					return 1;
				}
				EventChat[playerid] -= 1;
				format(string, sizeof(string), "[Event Chat] %s : %s", sendername, result);
				SendClientMessageToAll(COLOR_ORANGE,string);
				SetTimer("EcOn", eventtimer, 0);
				ec = 0;
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, "   You must do an event to use event chat.");
				return 1;
			}
		}
		return 1;
	}
2.Armele la mafii ar trebui modificate asa:

else if(PlayerInfo[playerid][pMember] == 17 || PlayerInfo[playerid][pLeader] == 17)
				{
					if(PlayerToPoint(30.0, playerid,-687.75, 939.36,13.63))
                    {
                 		if(GetPlayerMoney(playerid) < 2000)
	                	{
	                    	SendClientMessage(playerid, COLOR_GREY, "** You don't have enough money !");
	                    	return 1;
	                	}
						if(PlayerInfo[playerid][pRank] == 1)
						{
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	GivePlayerMoney(playerid, -5000);
						  }
						 else if(PlayerInfo[playerid][pRank] == 2)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	    			 	 else if(PlayerInfo[playerid][pRank] == 3)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	 				 	 else if(PlayerInfo[playerid][pRank] == 4)
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	
						  	GivePlayerMoney(playerid, -5000);
                        }
	     			 	else if(PlayerInfo[playerid][pRank] == 5)
					 	{
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	SafeGivePlayerWeapon(playerid, 1, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
	     				 else
					 	 {
						  	SafeGivePlayerWeapon(playerid, 24, 500);
						  	SafeGivePlayerWeapon(playerid, 8, 200);
						  	SafeGivePlayerWeapon(playerid, 30, 1000);
						  	SafeGivePlayerWeapon(playerid, 32, 1000);
						  	SafeGivePlayerWeapon(playerid, 27, 1000);
						  	SafeGivePlayerWeapon(playerid, 33, 1000);
						  	SafeGivePlayerWeapon(playerid, 1, 1000);
						  	GivePlayerMoney(playerid, -5000);
						 }
					}
					else
					{
						SCM(playerid, COLOR_GRAD2, "** You are not in the HQ !");
						return 1;
					}
				}
PRO de la mine Agente. Shadow daca le-ai baga serverul ar avea un succes enorm so mult mai indragit de catre playeri mai ales cuvtecurile si combat dhotgun la mafii.
[bine inteles ar trebui modificate coordonatele si pleader ,pmember dupa id-ul factiuni (coordonatele sunt cele de hq nu sunt bune sunt de pe sv meu de teste pe care creez)

 

 

Legat de billiard :

#include <a_samp>

#define NO_BALL 403
#define CALA 0
#define POL 1
#define WHITE 14
#define BLACK 15
#define TABLE 16
#define POLYGONS 6

forward Float:GetVectorAngle(obj, obj2);
forward Float:GetVectorAngle_XY(Float:fx, Float:fy, Float:tx, Float:ty);
forward Float:GetVectorDistance_PL(playerid, obj);
forward Float:GetVectorDistance_OB(obj, obj2);
forward Float:GetDistance(Float:fx, Float:fy, Float:tx, Float:ty);
forward Float:GetDistancePointToLong(Float:px,Float:py, Float:px1,Float:py1, Float:px2,Float:py2);

forward OnEndBilliard();
forward OnBallInHole(ballid);
forward OnTimer();
forward BallProperties();
forward OnShowedTD(playerid);


enum GameEnum
{
	bool:Waiting,
	bool:Running,
	bool:WhiteInHole,
	bool:BlackInHole,
    Timer,
	Timer2,
	Player1,
	Player2,
	LastBall
};
new Game[GameEnum];

enum BallEnum
{
	ObjID,
	Float:x,
	Float:y,
	Float:z,
	Float:a,
	Float:speed,
	TouchID
};
new Ball[17][BallEnum];

enum EnumVertices
{
	Float:x,
	Float:y
};
new Polygon[POLYGONS][2][EnumVertices];

enum PolygonInfo
{
	bool:Progress,
	Vertices
};
new PolyResult[POLYGONS][PolygonInfo];

enum EnumPlayer
{
	bool:Sighting,
	bool:AfterSighting,
	bool:Turn,
	BBall,
	Points,
	SelectLR,
	SelectUD,
	Float:a,
	Text:T1,
	Text:T2,
	Text:T3,
	Text:T4,
	Text:T5,
	Text:T6,
	TDTimer
};
new Player[20][EnumPlayer];

new Float:Hole[6][4] =
{
	{2495.6413,-1670.6297, 2495.5415,-1670.7099}, // 1  12
	{2496.4323,-1670.6297, 2496.5825,-1670.6398}, // 2  3
	{2497.3632,-1670.6297, 2497.4433,-1670.7299}, // 4  5
	{2497.4633,-1671.5506, 2497.3732,-1671.6607}, // 6  7
	{2496.5725,-1671.6607, 2496.4323,-1671.6607}, // 8  9
	{2495.6315,-1671.6607, 2495.5415,-1671.5606}  // 10 11
};

new Char[2][] =
{
	{"(0)"},
	{"(-)"}
};

public OnFilterScriptInit()
{
	for(new i = 0; i < 20; i++)
	{
	    Player[i][T1] = TextDrawCreate(481.000000,353.000000," ");
    	TextDrawUseBox(Player[i][T1],1);
    	TextDrawTextSize(Player[i][T1],602.000000,0.000000);
    	TextDrawLetterSize(Player[i][T1],0.359999,1.100000);
    	TextDrawSetShadow(Player[i][T1],1);
    	TextDrawColor(Player[i][T1],227275519);
    	TextDrawBoxColor(Player[i][T1],227275314);

		Player[i][T2] = TextDrawCreate(475.000000,344.000000," ");
		TextDrawColor(Player[i][T2],4294967295);
	    TextDrawSetShadow(Player[i][T2],1);
	    
	    Player[i][T3] = TextDrawCreate(481.000000,313.000000," ");
    	TextDrawUseBox(Player[i][T3],1);
    	TextDrawTextSize(Player[i][T3],635.000000,0.000000);
    	TextDrawLetterSize(Player[i][T3],0.359999,1.100000);
    	TextDrawSetShadow(Player[i][T3],1);
    	TextDrawColor(Player[i][T3],227275519);
    	TextDrawBoxColor(Player[i][T3],227275314);

		Player[i][T4] = TextDrawCreate(475.000000,304.000000," ");
		TextDrawColor(Player[i][T4],4294967295);
	    TextDrawSetShadow(Player[i][T4],1);
	    
	    Player[i][T5] = TextDrawCreate(481.000000,273.000000," ");
    	TextDrawUseBox(Player[i][T5],1);
    	TextDrawTextSize(Player[i][T5],635.000000,0.000000);
    	TextDrawLetterSize(Player[i][T5],0.359999,1.100000);
    	TextDrawSetShadow(Player[i][T5],1);
    	TextDrawColor(Player[i][T5],227275519);
    	TextDrawBoxColor(Player[i][T5],227275314);

		Player[i][T6] = TextDrawCreate(475.000000,264.000000," ");
		TextDrawColor(Player[i][T6],4294967295);
	    TextDrawSetShadow(Player[i][T6],1);
	}
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/bilard", cmdtext, true, 10) == 0)
	{
	    SetPlayerPos(playerid,2499.3174,-1683.8401,13.4014);
	    return 1;
	}
	if (strcmp("/bilard-start", cmdtext, true, 10) == 0)
	{
		if(Game[Waiting] == false && Game[Running] == false)
		{
			Game[Waiting] = true;
			Game[Player1] = playerid;
			Game[LastBall] = -1;
			Player[playerid][Points] = 7;
			
			TextDrawSetString(Player[playerid][T1],"inamicul ...");
	    	TextDrawShowForPlayer(playerid,Player[playerid][T1]);

	   		TextDrawSetString(Player[playerid][T2],"a?teptare");
	    	TextDrawShowForPlayer(playerid,Player[playerid][T2]);
	    	GivePlayerWeapon(playerid,7,1);
	    	
	    	new name[24];
	    	new str[100];
			name = GetName(playerid);
			format(str,sizeof(str),"%s de a?teptare pentru un adversar. Tip Billiard se alature pentru a concura împotriva gazda.",name);
	    	for(new i = 0; i < 20; i++)
	    	{
	    	    if(IsPlayerConnected(i) == 1 && playerid != i)
				{
	    	        TextDrawSetString(Player[i][T1],str);
					TextDrawShowForPlayer(i,Player[i][T1]);
					
					TextDrawSetString(Player[i][T2],"Bilard");
	    			TextDrawShowForPlayer(i,Player[i][T2]);
	    	    }
	    	    Player[i][BBall] = NO_BALL;
	    	}
			
		    Ball[0][ObjID] = CreateObject(3100, 2497.0749511719, -1670.9591064453, 13.199293525696, 0, 0, 0); //CALA
			Ball[1][ObjID] = CreateObject(3101, 2497.0034179688, -1671.01171875, 13.199293525696, 0, 0, 0); //CALA
			Ball[2][ObjID] = CreateObject(3102, 2497.0034179688, -1671.1900634766, 13.199293525696, 0, 0, 0); //CALA
			Ball[3][ObjID] = CreateObject(3103, 2496.8696289063, -1671.1865234375, 13.199293525696, 0, 0, 0); //CALA
			Ball[4][ObjID] = CreateObject(3104, 2496.9370117188, -1671.0673828125, 13.199293525696, 0, 0, 0); //CALA
			Ball[5][ObjID] = CreateObject(3105, 2497.072265625, -1671.2313232422, 13.199293525696, 0, 0, 0); //CALA
			Ball[6][ObjID] = CreateObject(3002, 2496.8068847656, -1671.1413574219, 13.199293525696, 0, 0, 0); //CALA

			Ball[7][ObjID] = CreateObject(2995, 2496.8703613281, -1671.0987548828, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[8][ObjID] = CreateObject(2996, 2497.0031738281, -1671.2750244141, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[9][ObjID] = CreateObject(2997, 2497.0705566406, -1671.3179931641, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[10][ObjID] = CreateObject(2998, 2497.0759277344, -1671.0457763672, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[11][ObjID] = CreateObject(2999, 2497.0063476563, -1671.1011962891, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[12][ObjID] = CreateObject(3000, 2497.0734863281, -1671.1456298828, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[13][ObjID] = CreateObject(3001, 2496.9333496094, -1671.2292480469, 13.199293525696, 0, 0, 0); //POLOWKA

			Ball[WHITE][ObjID] = CreateObject(3003, 2495.8618164063, -1671.1704101563, 13.209293525696, 0, 0, 0); //Biala
			Ball[BLACK][ObjID] = CreateObject(3106, 2496.9375, -1671.1451416016, 13.199293525696, 0, 0, 0); //Czarna
			Ball[TABLE][ObjID] = CreateObject(2964, 2496.4970703125, -1671.1528320313, 12.265947036743, 0, 0, 0); //Stol

			CreatePolygon(2495.6413,-1670.6297, 2496.4323,-1670.6297);
			CreatePolygon(2496.5825,-1670.6398, 2497.3632,-1670.6297);
			CreatePolygon(2497.4433,-1670.7299, 2497.4633,-1671.5506);
			CreatePolygon(2497.3732,-1671.6607, 2496.5725,-1671.6607);
			CreatePolygon(2496.4323,-1671.6607, 2495.6315,-1671.6607);
			CreatePolygon(2495.5415,-1671.5606, 2495.5415,-1670.7099);
		}
		return 1;
	}
	if (strcmp("/stop", cmdtext, true, 10) == 0)
	{
	    if(Game[Waiting] == true || Game[Running] == true)
	    {
			KillTimer(Game[Timer]);
			KillTimer(Game[Timer2]);
			for(new i = 0; i < 17; i++)
			{
	    		DestroyObject(Ball[i][ObjID]);
 	    	}
 	    	
 	    	if(Game[Waiting] == true)
 	    	    Game[Waiting] = false;
 	    	    
 	    	if(Game[Running] == true)
 	    	    Game[Running] = false;
 	    	    
			Game[WhiteInHole] = false;
			Game[BlackInHole] = false;
 	    	    
 	    	Player[Game[Player1]][Sighting] = false;
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T1]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T2]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T3]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T4]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T5]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T6]);
 	    	
 	    	Player[Game[Player2]][Sighting] = false;
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T1]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T2]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T3]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T4]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T5]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T6]);
	    }
	    return 1;
	}
	if (strcmp("/bilard-dolacz", cmdtext, true, 10) == 0)
	{
	    if(Game[Waiting] == true)
	    {
	        if(Game[Player1] != playerid)
	        {
	        	Game[Waiting] = false;
	        	Game[Running] = true;
	        	Game[Player2] = playerid;
	        	TextDrawHideForPlayer(playerid,Player[Game[Player1]][T1]);
	        	TextDrawHideForPlayer(playerid,Player[Game[Player1]][T2]);
	    		
	    		new str[50];
	    		new name[24];
	    		GivePlayerWeapon(playerid,7,1);
	    		
	    		new rand = random(2);
				if(rand == 0)
				{
				    name = GetName(Game[Player1]);
				    Player[Game[Player1]][Turn] = true;
				    Player[Game[Player2]][Turn] = false;
				}
				else if(rand == 1)
				{
				    name = GetName(Game[Player2]);
				    Player[Game[Player1]][Turn] = false;
				    Player[Game[Player2]][Turn] = true;
    			}
    			
    			for(new i = 0; i < 20; i++)
	    		{
	    		    if(IsPlayerConnected(i) == 1 && Game[Player1] != i && Game[Player2] != i)
					{
					    ShowMessage(i,"Bilard","Nu am avut timp sa va înscrie?i pentru joc. Ave?i posibilitatea sa a?tepta?i urmatoarea runda.");
					}
	 			}
				    
				Player[playerid][Points] = 7;
				format(str,sizeof(str),"gameplay-ul începe%s",name);
	    		ShowMessage(Game[Player1],"joc",str);
	    		ShowMessage(Game[Player2],"joc",str);
	    		
				new string[80];
				format(string,sizeof(string),"%s %d~n~%s %d",GetName(Game[Player1]),Player[Game[Player1]][Points],GetName(Game[Player2]),Player[Game[Player2]][Points]);
	    		TextDrawSetString(Player[Game[Player1]][T3],string);
	    		TextDrawSetString(Player[Game[Player1]][T4],"Bilard");
	    		TextDrawSetString(Player[Game[Player2]][T3],string);
	    		TextDrawSetString(Player[Game[Player2]][T4],"Bilard");
	    		
	    		TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T3]);
	    		TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T4]);
	    		
	    		TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T3]);
	    		TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T4]);
	    		
	        	for(new i = 0; i < 16; i++)
	        	{
					Ball[i][TouchID] = -1;
	        	}
	        }
	    }
	    return 1;
	}
	return 0;
}

public OnEndBilliard()
{
	for(new i = 0; i < 17; i++)
	{
	    DestroyObject(Ball[i][ObjID]);
    }

   	Game[Waiting] = false;
 	Game[Running] = false;
 	Game[WhiteInHole] = false;
    Game[BlackInHole] = false;
    
	Player[Game[Player1]][Sighting] = false;
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T1]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T2]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T3]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T4]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T5]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T6]);
	
 	Player[Game[Player2]][Sighting] = false;
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T1]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T2]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T3]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T4]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T5]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T6]);
}

public OnBallInHole(ballid)
{
	if(ballid != WHITE)
	{
    	DestroyObject(Ball[ballid][ObjID]);
    	Ball[ballid][speed] = 0;
    }
    else
    {
	     Ball[WHITE][speed] = 0.2;
         SetObjectPos(Ball[WHITE][ObjID],2495.8618164063, -1671.1704101563, 13.209293525696);
	     StopObject(Ball[WHITE][ObjID]);
	     Ball[WHITE][x] = 2495.8618164063;
	     Ball[WHITE][y] = -1671.1704101563;
	     Ball[WHITE][z] = 13.209293525696;
    }
	     
	Game[LastBall] = ballid;
	for(new i = 0; i < 16; i++)
	{
	    if(ballid == i)
	    {
	        if(ballid <= 6) //CALA
			{
			    if(Player[Game[Player1]][Turn] == true && Player[Game[Player1]][BBall] == NO_BALL)
			    {
			        Player[Game[Player1]][BBall] = CALA;
			        Player[Game[Player2]][BBall] = POL;
       			}
       			else if(Player[Game[Player2]][Turn] == true && Player[Game[Player2]][BBall] == NO_BALL)
       			{
       			    Player[Game[Player1]][BBall] = POL;
			        Player[Game[Player2]][BBall] = CALA;
       			}
	            
				if(Player[Game[Player1]][BBall] == CALA)
				    Player[Game[Player1]][Points]--;
				    
				else if(Player[Game[Player2]][BBall] == CALA)
				    Player[Game[Player2]][Points]--;
				
   			}
	            
	        else if(6 < ballid <= 13) //POLOWKA
	        {
                if(Player[Game[Player1]][Turn] == true && Player[Game[Player1]][BBall] == NO_BALL)
			    {
			        Player[Game[Player1]][BBall] = POL;
			        Player[Game[Player2]][BBall] = CALA;
       			}
       			else if(Player[Game[Player2]][Turn] == true && Player[Game[Player2]][BBall] == NO_BALL)
       			{
       			    Player[Game[Player1]][BBall] = CALA;
			        Player[Game[Player2]][BBall] = POL;
				}
	            
	            if(Player[Game[Player1]][BBall] == POL)
				    Player[Game[Player1]][Points]--;

				else if(Player[Game[Player2]][BBall] == POL)
				    Player[Game[Player2]][Points]--;
         	}

			else if(ballid == WHITE)
				Game[WhiteInHole] = true;
			    
			else if(ballid == BLACK)
			    Game[BlackInHole] = true;

	        break;
	    }
	}
	if(ballid != WHITE && ballid != BLACK)
	{
		new str[80];
		format(str,sizeof(str),"%s %s %d~n~%s %s %d",GetName(Game[Player1]),Char[Player[Game[Player1]][BBall]],Player[Game[Player1]][Points], GetName(Game[Player2]),Char[Player[Game[Player2]][BBall]],Player[Game[Player2]][Points]);
		TextDrawSetString(Player[Game[Player1]][T3],str);
		TextDrawSetString(Player[Game[Player2]][T3],str);
		TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T3]);
		TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T3]);
	}
}

public BallProperties()
{
	for(new i = 0; i < 16; i++)
	{
		if(Ball[i][speed] > 0.1)
	   	{
    		Ball[i][speed] = Ball[i][speed] / 1.4;
     		SetObjectSpeed(i,Ball[i][speed]);
    	}
   		else
    	{
    	    Ball[i][speed] = 0;
	        StopObject(Ball[i][ObjID]);
	        	
	        if(CheckAllBalls() == 1)
	        {
	            KillTimer(Game[Timer]);
	            KillTimer(Game[Timer2]);
	            
	            if(Game[LastBall] != - 1)
	            {
	                if(Game[LastBall] <= 6) //
					{
					    if(Player[Game[Player1]][BBall] == CALA)
					    {
					        Player[Game[Player1]][Turn] = true;
				   			Player[Game[Player2]][Turn] = false;
					    }
					    else if(Player[Game[Player2]][BBall] == CALA)
					    {
					        Player[Game[Player1]][Turn] = false;
				   			Player[Game[Player2]][Turn] = true;
					    }
					}
				    else if(6 < Game[LastBall] <= 13) //
	                {
	                    if(Player[Game[Player1]][BBall] == POL)
					    {
					        Player[Game[Player1]][Turn] = true;
				   			Player[Game[Player2]][Turn] = false;
					    }
					    else if(Player[Game[Player2]][BBall] == POL)
					    {
					        Player[Game[Player1]][Turn] = false;
				   			Player[Game[Player2]][Turn] = true;
					    }
	                }
	            }
	            else //
	            {
					if(Player[Game[Player1]][Turn] == true)
					{
				    	Player[Game[Player1]][Turn] = false;
				   		Player[Game[Player2]][Turn] = true;
					}
					else if(Player[Game[Player2]][Turn] == true)
					{
				   		Player[Game[Player1]][Turn] = true;
				   		Player[Game[Player2]][Turn] = false;
					}
	            }
	            
				TextDrawSetString(Player[Game[Player1]][T6],"coada");
				TextDrawSetString(Player[Game[Player2]][T6],"coada");
				TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T6]);
				TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T6]);
				
				if(Game[BlackInHole] == false)
				{
				    if(Game[WhiteInHole] == false)
				    {
    					if(Player[Game[Player1]][Turn] == true)
						{
				    		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
						}
						else if(Player[Game[Player2]][Turn] == true)
						{
				    		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
						}
					}
					else
					{
					    if(Player[Game[Player1]][Turn] == true)
			    		{
			        		Player[Game[Player1]][Turn] = false;
			        		Player[Game[Player2]][Turn] = true;
			        		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
			    		}
			   			else if(Player[Game[Player2]][Turn] == true)
			    		{
			        		Player[Game[Player1]][Turn] = true;
			        		Player[Game[Player2]][Turn] = false;
			        		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
			    		}
			    		Game[WhiteInHole] = false;
			    		ShowMessage(Game[Player1],"Bilard","Se merge bila alba");
			    		ShowMessage(Game[Player2],"Bilard","Se merge bila alba);
					}
					TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T5]);
					TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T5]);
				}
				else
				{
 	    	   		Game[Waiting] = true;

 	    	   		Player[Game[Player1]][Sighting] = false;
 	    	   		Player[Game[Player2]][Sighting] = false;
 	    	   		TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T1]);
 	    			TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T2]);

 	    			TextDrawSetString(Player[Game[Player1]][T4],"joc");
 	    			TextDrawSetString(Player[Game[Player2]][T4],"joc");
 	    			TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T4]);
 	    			TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T4]);

 	    			TextDrawSetString(Player[Game[Player1]][T3],"Am venit cu bila neagra");
 	    			TextDrawSetString(Player[Game[Player2]][T3],"Am venit cu bila neagra");
 	    			TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T3]);
 	   				TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T3]);

 	   				TextDrawSetString(Player[Game[Player1]][T6],"Victorii");
 	   				TextDrawSetString(Player[Game[Player2]][T6],"Victorii");
 	   				TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T6]);
 	   				TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T6]);
				    if(Player[Game[Player1]][Points] == 0 || Player[Game[Player2]][Points] == 0)
				    {
				        if(Player[Game[Player1]][Turn] == true)
				        {
				            TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
			       		    TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
				        }
				        else if(Player[Game[Player2]][Turn] == true)
				        {
				            TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
			       		    TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
				        }
				    }
				    else
				    {
      					if(Player[Game[Player1]][Turn] == true)
			   			{
			       			TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
			       		    TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
			    		}
			    		else if(Player[Game[Player2]][Turn] == true)
			    		{
			       			TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
			       			TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
			   			}
					}
					
					Player[Game[Player1]][Turn] = false;
			    	Player[Game[Player2]][Turn] = false;
			    	Game[BlackInHole] = false;

			    	TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T5]);
 	    			TextDrawShowForPlayer(Game[Player2],Player[Game[Player1]][T5]);

 	    			SetTimer("OnEndBilliard",10000,0);
				}
				Game[LastBall] = -1;
				break;
	        }
		}
	}
}

public OnTimer()
{
	new temp[2];
	for(new i = 0; i < 16; i++)
	{
	    for(new j = 0; j < 16; j++)
	    {
	        if(i != j)
	        {
        		if(GetVectorDistance_OB(Ball[i][ObjID],Ball[j][ObjID]) < 0.09)
				{
			    	if(Ball[i][TouchID] != j && Ball[j][TouchID] != i)
			    	{
        				if(Ball[i][speed] > 0.1)
						{
        		    		new Float:pos[6];
        		    		GetObjectPos(Ball[i][ObjID],pos[0],pos[1],pos[2]);
        		    		GetObjectPos(Ball[j][ObjID],pos[3],pos[4],pos[5]);
        		    
        		    		Ball[j][TouchID] = i;
        		   		    Ball[i][TouchID] = j;
        		    		temp[0] = i;
        		    		temp[1] = j;
        		    
        		    		Ball[j][a] = GetVectorAngle(Ball[i][ObjID],Ball[j][ObjID]);
        		    
        		    		Ball[j][speed] = Ball[i][speed];
        		    		if(Ball[i][speed] < 3)
        		    		{
        		       			Ball[i][a] = GetVectorAngle(Ball[i][ObjID],Ball[j][ObjID]) + 180;
        		    			Ball[i][speed] = Ball[i][speed] / 1.15; //1.5
        		    			pos[0] += 5 * floatsin(-Ball[i][a],degrees); //(Ball[i][speed] / 1.1)
        		    			pos[1] += 5 * floatcos(-Ball[i][a],degrees); //(Ball[i][speed] / 1.1)
        		    			MoveObject(Ball[i][ObjID],pos[0],pos[1],pos[2],Ball[i][speed]);
        		   			}
        		    		else if(Ball[i][speed] >= 3)
        		    		{
        		        		Ball[i][speed] = Ball[i][speed] / 1.15; //2
        		        		pos[0] += 5 * floatsin(-Ball[i][a],degrees); //Ball[i][speed] / 2) + random(25)
        		        		pos[1] += 5 * floatcos(-Ball[i][a],degrees); //Ball[i][speed] / 2) - random(25)
        		        		MoveObject(Ball[i][ObjID],pos[0],pos[1],pos[2],Ball[i][speed]);
        		    		}

							Ball[j][speed] = Ball[j][speed] / 1.1;
							pos[3] += 5 * floatsin(-Ball[j][a],degrees); //Ball[j][speed] / 1.3
							pos[4] += 5 * floatcos(-Ball[j][a],degrees); //Ball[j][speed] / 1.3
							MoveObject(Ball[j][ObjID],pos[3],pos[4],pos[5],Ball[j][speed]);
							
			    			Ball[i][x] = pos[0];
							Ball[i][y] = pos[1];
							Ball[i][z] = Ball[WHITE][z];
							Ball[j][x] = pos[3];
							Ball[j][y] = pos[4];
							Ball[j][z] = Ball[WHITE][z];
						}
        		    }
        		}
        	}
		}
  		new Float:pos[5];
		GetObjectPos(Ball[i][ObjID],pos[0],pos[1],pos[2]);
		for(new h = 0; h < 6; h++)
		{
		    if(PointInLong(0.04,pos[0],pos[1],Hole[h][0],Hole[h][1],Hole[h][2],Hole[h][3]) == 1)
		    {
		        CallRemoteFunction("OnBallInHole","d",i);
		        break;
		    }
		}
		for(new k = 0; k < POLYGONS; k++)
  		{
  		    if(PointInPolygon(pos[0],pos[1],k) == 1)
  		    {
  		        new Float:tmp[4];
  		        tmp[0] = pos[0];
  		        tmp[1] = pos[1];
  		        tmp[2] = pos[0];
  		        tmp[3] = pos[1];
  		        pos[0] += floatsin(-Ball[i][a] + 180,degrees) / 5;
				pos[1] += floatcos(-Ball[i][a] + 180,degrees) / 5;
				
				new Float:angle[2];
				angle[0] = GetVectorAngle_XY(tmp[0],tmp[1],Polygon[k][0][x],Polygon[k][0][y]);
				if(angle[0] > 0)
				{
				    angle[1] = angle[0] + 180;
				    if(angle[1] > 360)
				        angle[1] = angle[1] - 360;
				}
				else
				{
                    angle[1] = GetVectorAngle_XY(tmp[0],tmp[1],Polygon[k][0][x],Polygon[k][0][y]);
					angle[0] = angle[1] + 180;
					if(angle[0] > 360)
					    angle[0] = angle[0] - 360;

					if(angle[1] < 0)
					    angle[1] = angle[0] + 180;
				}
				
				new Float:stop = Ball[i][a] + 180;
				if(stop > 360)
				    stop = stop - 360;
				    
				if(angle[0] < angle[1])
				{
				    if(angle[0] < stop < angle[1])
						angle[0] = angle[0] + 90;

					else if(angle[1] < stop < 360 || 0 < stop < angle[0])
					{
						angle[0] = angle[1] + 90;
						if(angle[0] > 360)
				  			angle[0] = angle[0] - 360;
				    }
				}
				else if(angle[0] > angle[1])
				{
				    if(angle[0] > stop > angle[1])
				        angle[0] = angle[1] + 90;

					else if(angle[1] > stop > 0)
					{
					    angle[0] = angle[1] - 90;
					    if(angle[0] > 360)
			      			angle[0] = angle[0] - 360;
					}
					else if(360 > stop > angle[0])
					{
					    angle[0] = angle[0] + 90;
					    if(angle[0] > 360)
			      			angle[0] = angle[0] - 360;
					}
				}
				
				new Float:sraka[2];
				sraka[0] = tmp[0];
				sraka[1] = tmp[1];
				
				sraka[0] += floatsin(-angle[0],degrees) / 50;
				sraka[1] += floatcos(-angle[0],degrees) / 50;
				
				tmp[0] += floatsin(-angle[0],degrees) / 7;
				tmp[1] += floatcos(-angle[0],degrees) / 7;
				SetObjectPos(Ball[i][ObjID],sraka[0],sraka[1],13.199293525696);
				
				new Float:ang;
				new Float:dist;
				ang = GetVectorAngle_XY(pos[0],pos[1],tmp[0],tmp[1]);
				dist = GetDistance(pos[0],pos[1],tmp[0],tmp[1]);
				
				pos[0] += (dist * floatsin(-ang,degrees)) * 2;
				pos[1] += (dist * floatcos(-ang,degrees)) * 2;
				
				
				new Float:ang2;
				ang2 = GetVectorAngle_XY(pos[0],pos[1],tmp[2],tmp[3]);
				ang2 = ang2 + 180;
				
				tmp[2] += 5 * floatsin(-ang2,degrees);
				tmp[3] += 5 * floatcos(-ang2,degrees);
				
				MoveObject(Ball[i][ObjID],tmp[2],tmp[3],13.199293525696,Ball[i][speed]);
				Ball[i][x] = tmp[2];
				Ball[i][y] = tmp[3];
				if(ang2 > 360)
				    ang2 = ang2 - 360;

				Ball[i][a] = ang2;
  		        break;
  		    }
  		}
	}
	Ball[temp[0]][TouchID] = -1;
	Ball[temp[1]][TouchID] = -1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if(newkeys & 128)
	{
	    if(Player[playerid][Sighting] == false && CheckAllBalls() == 1 && Game[Running] == true && Player[playerid][Turn] == true)
	    {
	        new Float:dist = GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]);
	    	if(GetPlayerWeapon(playerid) == 7 && dist < 1.6)
	        {
	        	new Float:pos[7];
	        	GetObjectPos(Ball[WHITE][ObjID],pos[0],pos[1],pos[2]);
				GetPlayerPos(playerid,pos[3],pos[4],pos[5]);
				pos[6] = GetVectorAngle_XY(pos[3],pos[4],pos[0],pos[1]);
				Player[playerid][Sighting] = true;
				Player[playerid][AfterSighting] = true;
				Player[playerid][SelectLR] = 0;
				Player[playerid][SelectUD] = 5;
				
				TextDrawSetString(Player[playerid][T2],"Predkosc");
	    	    TextDrawShowForPlayer(playerid,Player[playerid][T2]);
	    	    
	    	    TextDrawSetString(Player[playerid][T1],"60 cm~w~/s");
	    	    TextDrawShowForPlayer(playerid,Player[playerid][T1]);
				
				if(0.9 <= dist <= 1.2)
				{
				    pos[3] += floatsin(-pos[6] + 180,degrees) * 0.3;
				    pos[4] += floatcos(-pos[6] + 180,degrees) * 0.3;
				}
				else if(dist < 0.9)
				{
				    pos[3] += floatsin(-pos[6] + 180,degrees) * 0.6;
				    pos[4] += floatcos(-pos[6] + 180,degrees) * 0.6;
				}
				SetPlayerPos(playerid,pos[3],pos[4],pos[5]);
				SetPlayerFacingAngle(playerid,pos[6] - 2.2);
				Player[playerid][a] = pos[6] - 2.2;
				
    			pos[3] += floatsin(-pos[6] - 10,degrees) * 0.2;
		  		pos[4] += floatcos(-pos[6] - 10,degrees) * 0.2;
		    	SetPlayerCameraPos(playerid,pos[3],pos[4],pos[2] + 0.5);
			    SetPlayerCameraLookAt(playerid,pos[0],pos[1],pos[2]);
			    ApplyAnimation(playerid,"POOL","POOL_Med_Start",1,0,0,0,1,0,1);
	    	}
   		}
	}
	else if(oldkeys & 128)
	{
	    if(Player[playerid][AfterSighting] == true)
	    {
	    	SetCameraBehindPlayer(playerid);
	    	ApplyAnimation(playerid,"POOL","POOL_Med_Shot_O",4.1,0,1,1,1,1,1);
	        
     		TextDrawHideForPlayer(playerid,Player[playerid][T1]);
	   		TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	   		Player[playerid][AfterSighting] = false;

	   		if(Player[playerid][Sighting] == true)
	   		    Player[playerid][Sighting] = false;
	   	}
	}
	
	if(newkeys & KEY_FIRE)
	{
	    if(Player[playerid][Sighting] == true)
	    {
	        new Float:pos[7];
	    	GetObjectPos(Ball[WHITE][ObjID],pos[0],pos[1],pos[2]);
	    	
	    	Game[Timer] = SetTimer("OnTimer",10,1);
	    	Game[Timer2] = SetTimer("BallProperties",200,1);
	    	
	    	TextDrawHideForPlayer(playerid,Player[playerid][T1]);
	        TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	        Player[playerid][Sighting] = false;
	    	
	    	if(Player[playerid][a] > 360)
				Player[playerid][a] = Player[playerid][a] - 360;

			else if(Player[playerid][a] < 0)
			    Player[playerid][a] = 360 + Player[playerid][a];
	    	
			Ball[WHITE][a] = Player[playerid][a];
				   
	    	pos[0] += 5 * floatsin(-Ball[WHITE][a],degrees);
	    	pos[1] += 5 * floatcos(-Ball[WHITE][a],degrees);
			Ball[WHITE][x] = pos[0];
			Ball[WHITE][y] = pos[1];
			Ball[WHITE][z] = pos[2];
			Ball[WHITE][speed] = Player[playerid][SelectUD] / 1.5;
			
			new Float:pp[4];
			GetPlayerPos(playerid,pp[0],pp[1],pp[2]);
			GetPlayerFacingAngle(playerid,pp[3]);
			pp[0] += floatsin(-pp[3] - 90,degrees) * 0.3;
			pp[1] += floatcos(-pp[3] - 90,degrees) * 0.3;
			SetPlayerPos(playerid,pp[0],pp[1],pp[2]);
			
			SetPlayerCameraPos(playerid,2496.4970703125, -1671.1528320313, 12.275947036743 + 5);
			SetPlayerCameraLookAt(playerid,2496.4970703125, -1671.1528320313, 12.275947036743);
			ApplyAnimation(playerid,"POOL","POOL_Med_Shot",4.1,0,1,1,1,1,1);
	    }
	}
	return 1;
}

public OnPlayerUpdate(playerid)
{
	if(Player[playerid][Sighting] == true)
	{
	    if(GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]) < 1.6)
	    {
	    	new key[3];
	    	new Float:pos[3];
	    	GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    		GetPlayerKeys(playerid,key[0],key[1],key[2]);
	    	if(key[2] == KEY_LEFT && Player[playerid][SelectLR] < 10)
	    	{
	    	    new Float:angle;
	    	    new Float:angXY;
				GetPlayerFacingAngle(playerid,angle);
				
				Player[playerid][SelectLR]++;
			
				pos[0] += floatsin(-angle - 90,degrees) / 20;
				pos[1] += floatcos(-angle - 90,degrees) / 20;
			
				new Float:dist = GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]);
				new Float:pp[3];
				GetObjectPos(Ball[WHITE][ObjID],pp[0],pp[1],pp[2]);
				angXY = GetVectorAngle_XY(pos[0],pos[1],pp[0],pp[1]);
			
				if(0.9 <= dist <= 1.2)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.3;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.3;
				}
				else if(dist < 0.9)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.6;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.6;
				}
				SetPlayerPos(playerid,pos[0],pos[1],pos[2]);
				SetPlayerFacingAngle(playerid,angXY - 2.2);
				Player[playerid][a] = angXY - 2.2;
			
				pos[0] += floatsin(-angXY - 10,degrees) * 0.2;
 				pos[1] += floatcos(-angXY - 10,degrees) * 0.2;
		   	 	SetPlayerCameraPos(playerid,pos[0],pos[1],pp[2] + 0.5);
	       		SetPlayerCameraLookAt(playerid,pp[0],pp[1],pp[2]);
	        	ApplyAnimation(playerid,"POOL","POOL_Med_Start",1,0,0,0,1,0,1);
	    	}
	    	else if(key[2] == KEY_RIGHT && Player[playerid][SelectLR] > -10)
	    	{
	    	    new Float:angle;
	    	    new Float:angXY;
				GetPlayerFacingAngle(playerid,angle);

				pos[0] += floatsin(-angle + 90,degrees) / 20;
				pos[1] += floatcos(-angle + 90,degrees) / 20;
				
				Player[playerid][SelectLR]--;

				new Float:dist = GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]);
				new Float:pp[3];
				GetObjectPos(Ball[WHITE][ObjID],pp[0],pp[1],pp[2]);
				angXY = GetVectorAngle_XY(pos[0],pos[1],pp[0],pp[1]);
			
				if(0.9 <= dist <= 1.2)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.3;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.3;
				}
				else if(dist < 0.9)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.6;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.6;
				}
				SetPlayerPos(playerid,pos[0],pos[1],pos[2]);
				SetPlayerFacingAngle(playerid,angXY - 2.2);
				Player[playerid][a] = angXY - 2.2;

				pos[0] += floatsin(-angXY - 10,degrees) * 0.2;
 				pos[1] += floatcos(-angXY - 10,degrees) * 0.2;
		    	SetPlayerCameraPos(playerid,pos[0],pos[1],pp[2] + 0.5);
	        	SetPlayerCameraLookAt(playerid,pp[0],pp[1],pp[2]);
	        	ApplyAnimation(playerid,"POOL","POOL_Med_Start",1,0,0,0,1,0,1);
	    	}
	    	else if(key[1] == KEY_UP || key[1] == KEY_DOWN)
	    	{
	    	    if(key[1] == KEY_UP && 0 < Player[playerid][SelectUD] < 8)
	    	    {
					Player[playerid][SelectUD]++;
					
					if(Player[playerid][TDTimer] != 0)
	    	    	{
	    	        	KillTimer(Player[playerid][TDTimer]);
	    				Player[playerid][TDTimer] = 0;
	    	    	}

	    	    	TextDrawSetString(Player[playerid][T2],"Predkosc");
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T2]);

	    	    	new str[20];
	    	    	new length = (Player[playerid][SelectUD] / 2) * 30;
	    	    	
	    	    	if(length == 0)
						length = 15;
						
	    	   		format(str,sizeof(str),"%d cm~w~/s",length);
	    	    	TextDrawSetString(Player[playerid][T1],str);
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T1]);
				}
	    	    else if(key[1] == KEY_DOWN && 1 < Player[playerid][SelectUD] <= 8)
		  		{
	    	        Player[playerid][SelectUD]--;
	    	        
	    	        if(Player[playerid][TDTimer] != 0)
	    	    	{
	    	        	KillTimer(Player[playerid][TDTimer]);
	    				Player[playerid][TDTimer] = 0;
	    	    	}

	    	    	TextDrawSetString(Player[playerid][T2],"Predkosc");
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T2]);

	    	    	new str[20];
					new length = (Player[playerid][SelectUD] / 2) * 30;
					
					if(length == 0)
						length = 15;
						
	    	   		format(str,sizeof(str),"%d cm~w~/s",length);
	    	    	TextDrawSetString(Player[playerid][T1],str);
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T1]);
      			}
	    	}
		}
    }
	return 1;
}

public OnShowedTD(playerid)
{
	TextDrawHideForPlayer(playerid,Player[playerid][T1]);
	TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	Player[playerid][TDTimer] = 0;
}

stock SetObjectSpeed(sysobj, Float:speedy)
{
	MoveObject(Ball[sysobj][ObjID],Ball[sysobj][x],Ball[sysobj][y],Ball[sysobj][z],speedy);
}

stock CheckAllBalls()
{
	for(new i = 0; i < 16; i++)
	{
	    if(Ball[i][speed] != 0)
	        return 0;
	    else if(i == 15)
	    {
	        if(Ball[i][speed] == 0)
	            return 1;
	    }
	}
	return 0;
}

stock Float:GetVectorAngle(obj, obj2)
{
	new Float:vector[3];
	new Float:pos[6];
	GetObjectPos(obj,pos[0],pos[1],pos[2]);
	GetObjectPos(obj2,pos[3],pos[4],pos[5]);
	vector[0] = pos[3] - pos[0];
	vector[1] = pos[4] - pos[1];
	vector[2] = atan(-(vector[0] / vector[1]));
	if(vector[1] < 0)
	    vector[2] = vector[2] >= 180 ? vector[2] - 180 : vector[2] + 180;
	    
	return vector[2];
}

stock Float:GetVectorAngle_XY(Float:fx, Float:fy, Float:tx, Float:ty)
{
	new Float:vector[3];
	vector[0] = tx - fx;
	vector[1] = ty - fy;
	vector[2] = atan(-(vector[0] / vector[1]));
	if(vector[1] < 0)
	    vector[2] = vector[2] >= 180 ? vector[2] - 180 : vector[2] + 180;

	return vector[2];
}

stock Float:GetVectorDistance_PL(playerid, obj)
{
    new Float:pos[6];
	GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
	GetObjectPos(obj,pos[3],pos[4],pos[5]);
	return floatsqroot(floatpower(pos[3] - pos[0],2) + floatpower(pos[4] - pos[1],2) + floatpower(pos[5] - pos[2],2));
}

stock Float:GetVectorDistance_OB(obj, obj2)
{
	new Float:pos[6];
	GetObjectPos(obj,pos[0],pos[1],pos[2]);
	GetObjectPos(obj2,pos[3],pos[4],pos[5]);
	return floatsqroot(floatpower(pos[3] - pos[0],2) + floatpower(pos[4] - pos[1],2) + floatpower(pos[5] - pos[2],2));
}

stock Float:GetDistance(Float:fx, Float:fy, Float:tx, Float:ty)
{
	return floatsqroot(floatpower(tx - fx,2) + floatpower(ty - fy,2));
}

stock Float:GetDistancePointToLong(Float:px,Float:py, Float:px1,Float:py1, Float:px2,Float:py2)
{
    new Float:vec[3];
	vec[0] = GetDistance(px1,py1,px2,py2);
	if((vec[1] = GetDistance(px,py,px1,py1)) < vec[0] && (vec[2] = GetDistance(px,py,px2,py2)) < vec[0])
	{
	    new Float:opt[2];
		opt[0] = (vec[0] + vec[1] + vec[2]) / 2;
	    opt[1] = floatsqroot(opt[0] * (opt[0] - vec[0]) * (opt[0] - vec[1]) * (opt[0] - vec[2]));
		opt[1] = ((opt[1] * 2) / vec[0]);
		return opt[1];
	}
	return 0.0;
}


stock PointInLong(Float:size, Float:px,Float:py, Float:px1,Float:py1, Float:px2,Float:py2)
{
	new Float:vec[3];
	vec[0] = GetDistance(px1,py1,px2,py2);
	if((vec[1] = GetDistance(px,py,px1,py1)) < vec[0] && (vec[2] = GetDistance(px,py,px2,py2)) < vec[0])
	{
	    new Float:opt[2];
		opt[0] = (vec[0] + vec[1] + vec[2]) / 2;
	    opt[1] = floatsqroot(opt[0] * (opt[0] - vec[0]) * (opt[0] - vec[1]) * (opt[0] - vec[2]));
		opt[1] = ((opt[1] * 2) / vec[0]) * 2;
		if(opt[1] < size)
		    return 1;
	}
	return 0;
}

stock CreatePolygon(Float:px1,Float:py1, Float:px2,Float:py2)
{
	for(new i = 0; i < POLYGONS; i++)
	{
	    if(PolyResult[i][Progress] == false)
	    {
			PolyResult[i][Progress] = true;
			PolyResult[i][Vertices] = 2;

			Polygon[i][0][x] = px1;
			Polygon[i][0][y] = py1;

			Polygon[i][1][x] = px2;
			Polygon[i][1][y] = py2;
			return i;
	    }
	}
	return 0;
}

stock ShowMessage(playerid, message1[], message2[])
{
	if(Player[playerid][TDTimer] != 0)
	{
	    KillTimer(Player[playerid][TDTimer]);
	    Player[playerid][TDTimer] = 0;
	}
	
	TextDrawHideForPlayer(playerid,Player[playerid][T1]);
    TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	TextDrawSetString(Player[playerid][T2],message1);
	TextDrawSetString(Player[playerid][T1],message2);
	TextDrawShowForPlayer(playerid,Player[playerid][T1]);
	TextDrawShowForPlayer(playerid,Player[playerid][T2]);
	
	new space;
	for(new i = 0; i < strlen(message2); i++)
	{
		if(message2[i] == ' ')
		    space++;
	}
	
	if(space != 0)
		Player[playerid][TDTimer] = SetTimerEx("OnShowedTD",space * 3000,0,"d",playerid);
		
	else
	    Player[playerid][TDTimer] = SetTimerEx("OnShowedTD",3000,0,"d",playerid);
}

stock PointInPolygon(Float:px, Float:py, polygonid)
{
	if(PolyResult[polygonid][Progress] == true)
	{
		for(new i = 0; i < PolyResult[polygonid][Vertices]; i++)
		{
			if(i == PolyResult[polygonid][Vertices] - 1)
			{
			    if(PointInLong(0.06,px,py,Polygon[polygonid][i][x],Polygon[polygonid][i][y],Polygon[polygonid][0][x],Polygon[polygonid][0][y]) == 1)
		        	return 1;
			}
			else
			{
				if(PointInLong(0.06,px,py,Polygon[polygonid][i][x],Polygon[polygonid][i][y],Polygon[polygonid][i + 1][x],Polygon[polygonid][i + 1][y]) == 1)
		      		return 1;
   			}
		}
	}
	return 0;
}

stock GetName(playerid)
{
	new name[24];
	GetPlayerName(playerid,name,24);
	return name;
}

stock Release()
{
	for(new i = 0; i < 20; i++)
	{
	    TextDrawHideForPlayer(i,Player[i][T1]);
	    TextDrawHideForPlayer(i,Player[i][T2]);
	    TextDrawHideForPlayer(i,Player[i][T3]);
	    TextDrawHideForPlayer(i,Player[i][T4]);
	    TextDrawHideForPlayer(i,Player[i][T5]);
	    TextDrawHideForPlayer(i,Player[i][T6]);
	    TextDrawDestroy(Player[i][T1]);
     	TextDrawDestroy(Player[i][T2]);
     	TextDrawDestroy(Player[i][T3]);
     	TextDrawDestroy(Player[i][T4]);
     	TextDrawDestroy(Player[i][T5]);
     	TextDrawDestroy(Player[i][T6]);
	}
	if(Game[Running] == true || Game[Waiting] == true)
	{
		KillTimer(Game[Timer]);
		KillTimer(Game[Timer2]);
		for(new i = 0; i < 17; i++)
		{
	    	DestroyObject(Ball[i][ObjID]);
 	    }
	}
}
  • Upvote 1
Posted

Inca o sugestie ar fi Schimbarea sistem de shooting (din cate am vazut seamana cu Lag shooting si este enervant la duele)


	
	public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
	
	
	{
	
	
	 
	
	
	    if(issuerid != INVALID_PLAYER_ID && IsPlayerConnectedEx(issuerid))
	
	
	    {
	
	
	        if(tazer_out[issuerid])
	
	
	        {
	
	
	            if(GetPlayerWeapon(issuerid) == WEAPON_SILENCED)
	
	
	            {
	
	
	                if(GetDistanceBetweenPlayers(issuerid,playerid) < 10.0)
	
	
	                {
	
	
	                    TazePlayer(issuerid,playerid);
	
	
	                }
	
	
	            }
	
	
	        }
	
	
	    }
	
	
	    if(issuerid != INVALID_PLAYER_ID)
	
	
	    {
	
	
	        if(amount > 5.0 && weaponid != 0)
	
	
	        {
	
	
	            new Float:armor;
	
	
	            GetPlayerArmour(playerid,armor);
	
	
	            if(armor <= 0.0)
	
	
	            {
	
	
	                //TextDrawShowForPlayer(playerid,crash_screen);
	
	
	                //SetTimerEx("HideCrash",250,0,"i",playerid);
	
	
	                //SetPlayerDrunkLevel(playerid,(GetPlayerDrunkLevel(playerid) + 4000));
	
	
	            }
	
	
	        }
	
	
	    }
	
	
	     new Float:HP;
	
	
	    GetPlayerHealth(playerid, HP);
	
	
	    if(weaponid == 24) SetPlayerHealth(playerid, HP-50);//DesertEagle
	
	
	    if(weaponid == 22) SetPlayerHealth(playerid, HP-50);//Colt45
	
	
	    if(weaponid == 32) SetPlayerHealth(playerid, HP-10);//Tec9
	
	
	    if(weaponid == 28) SetPlayerHealth(playerid, HP-10);//Uzi
	
	
	    if(weaponid == 23) SetPlayerHealth(playerid, HP-50);//SilencedColt
	
	
	    if(weaponid == 31) SetPlayerHealth(playerid, HP-35);//M4
	
	
	    if(weaponid == 30) SetPlayerHealth(playerid, HP-40);//AK
	
	
	    if(weaponid == 29) SetPlayerHealth(playerid, HP-18);//MP5
	
	
	    if(weaponid == 34) SetPlayerHealth(playerid, HP-300);//SniperRifle
	
	
	    if(weaponid == 33) SetPlayerHealth(playerid, HP-35);//CuntGun
	
	
	    if(weaponid == 25) SetPlayerHealth(playerid, HP-100);//PumpShotgun
	
	
	    if(weaponid == 27) SetPlayerHealth(playerid, HP-70);//Spaz12
	
	
	    return 1;
	
	
	}
	

 

O alta propunere ar fi schimbarea economiei in una mai grea adica faci bani prea usor zici ca este godfather sa se scada la 10k la 10 minute de fac bani la toate joburile

-Sa se scumpeasca masinile

-Sa se adauge factiune Tow Truck Company

-War-ul sa fie facut pe kill-uri

-Sa se modifice regulamentul astfel ca dm sa nu se pedepseasca cu jail ci cu warn/ban (deoarece toata lumea face dm pe server)

 

Mai revin cu edit

Posted

Sugestie:Refferals sistem

Cum crezi ca ar ajuta serverul: ref. sistem este un sistem care ajuta playerii. Este si pe plan psihologic.

De ce este pe plan psihologic?

-Sa va dau un exemplu: eu aduc un player."Contul mru are un referals spre exemplu: 33890 asa este un ref. sistem.

Ce avantaje au playerii de care au fost adusi?

-Primesc bani si puncte rp mai multe cand playerul adus apasa /buylevel .Acest sistem poate aduce si faima playerului care isi aduce prietenii.

De ce faima?

-Odata facut acest sistem, trebuie implementat si e forum langa user panel , o sectiune Top Players. Acolo va puteti urmari cati playeri ati adus.

 

 

Ps:Agent este fratele meu scritam amandoi.Daca vrei acest sistem si te incurci contacteaza-ma.

Posted

@@Mr.Agentx@

Bai fratilor, aveti un model dupa care trebuie sa postati...

Ba baiatule tu ai probleme cu vederea? Ia mai uita-te odata si numai face tu +1.
Posted

Sugestie: Cei din PD/NG/FBI sa poata conduce masinile care sunt si incuiate. Ar putea sa se faca o comanda pentru a descuia masina si pentru a putea pleca cu ea


Cum crezi ca ar ajuta serverul: Pai daca bubuie masina putem lua alta de pe strada chiar daca e incuiata iar celui care i-a fost sparta masina sa-i apara pe chat

  • Upvote 1
Posted (edited)

Sugestie:Sa se mai bage mafii si sa se fac hq in SF deoarece sunt putine mafii

Cum crezi ca ar ajuta serverul:Cred ca ar fii mai bine  sa se bage  La coza nostra sau ceva de genu ,  sa se bage 2 mafii care sa fie in SF ca e un oras parasit si ar fi frum sa fie si el populat si sa aiba mafiotii lui...

Edited by marionou
Posted

Sugestie:Sa se mai bage mafii si sa se fac hq in SF deoarece sunt putine mafii

 

Cum crezi ca ar ajuta serverul:Cred ca ar fii mai bine  sa se bage  La coza nostra sau ceva de genu ,  sa se bage 2 mafii care sa fie in SF ca e un oras parasit si ar fi frum sa fie si el populat si sa aiba mafiotii lui...

 

Wtf, vrei mafi si in SF ? :)) glumesti nu ? numa ce e populat 20% lv, si voi vreti SF.

Posted

Sugestie: Propun ca la /skill sa apara ceva gen "Rob skill: 1 [20/25]"

Cum ar ajuta serverul?: Pai ar sti si lumea cate roburi mai are de dat pana la next skill..nu intereseaza pe nimeni cate roburi au dat pana acum..si multi playeri intreaba pe /report cate roburi trebuie pentru skill 2, skill 3 etc. Asa ar fi mult mai simplu si mai eficient zic eu..

  • Upvote 3
Posted

 

Sugestie: Cei din PD/NG/FBI sa poata conduce masinile care sunt si incuiate. Ar putea sa se faca o comanda pentru a descuia masina si pentru a putea pleca cu ea

Cum crezi ca ar ajuta serverul: Pai daca bubuie masina putem lua alta de pe strada chiar daca e incuiata iar celui care i-a fost sparta masina sa-i apara pe chat

 

Ar fi multe abuzuri, unii ar lua orice maşina doar de dragul de a conduce...nu are rost să bage aşa ceva..

Posted (edited)

Inca de la inceput va rog sa luati in seama acest topic pentru ca este unul foarte detaliat. 

 

 

Sugestie: Sa se adauge o factiune numita Bus Conductors care sa se ocupe cu transportarea Jucatorilor la anumite statii fixe nu unde ar dori playerul sa ajunga ci doar la niste statii stabilite de catre  Owneri. Semnul de la statiile de autobuz ar arata  asa:http://i.imgur.com/jH9CPKH.png. Aceste Semne vor fi puse la HQ-ul Factiunilor la Banca din LS la Banca din LV la Gun Shop LS, La Gun Shop LV, la PD si la fiecare punct de unde se i-au job-urile. Fiecare Conductor de autobuz v-a avea un traseu marcat cu Verde si va trebuii sa opreasca in fiecare Statie. Se va stabili si un HQ al aacestei factiunii unde va fi si un Garaj mare de unde se iau acele autobuze numite COACH ele vor efectua curse in Peste tot pe unde au statii

 Subforumul acestei factiunii ar arata cam asa: -Aplicatii ( Model de cerere- Nick:

                                                                                                                       Varsta Reala:

                                                                                                                       Level:

                                                                                                                       Poza cu /stats [obligatorie]

                                                                                                                       De ce vrei sa faci parte din aceasta factiune?:

                                                                                                                       De cat timp joci SA:MP?:

                                                                                                                       De cat timp joci pe Bugged?:

                                                                                                                       Descrie-te in minim 20 de de cuvinte:

                                                                                                                       Ai citit si iinvatat regulamentul?:

                                                                                                                       Alte Precizari:

 

                                                                          -Regulament ( Este interzis sa luati playerii care nu asteapta in statie in autobuz.

                                                                                                  Este interzis sa faceti DB ca sofer

                                                                                                  Este interzis sa dati /rob la volanul autobuzului

                                                                                                  Este obligatoriu sa opriti in fiecare statie

                                                                                                  Nu aveti voie sa injuratii calatorii 

                                                                                                  Nu aveti voie sa parasiti autobuzul pe drum, mergand de la o statie la cealalta

                                                                                                  

                                                                          -Inforamtii ( Pretul unui bilet va fi de 3000$ indiferent de distanta pe care o parcurge calatorul. Calatorul va fi taxat automat la intrarea in autobuz cu 3000$ 

                                                                          -Invoiri Sedinte ( Nick

                                                                                                     Rank

                                                                                                     Motivul Invoirii)

                                                                       

                                                                          -Inactivitate (  Nick

                                                                                                Intervalul de zile in care vei fi inactiv:

                                                                                                Rank:

                                                                                                Motivul absentei)                 

                                                                          -Sedinte ( Vor avea loc in fiecare seara de Vineri la ora 21:00 in incinta HQ-ului

                                                                          -Raport de activitate ( Fiecare stationare intr-o statie v-a aduce 1 Punct. Pentru Rank Up trebuie: Rank1- Daca esti acceptat de Tester

                                       Rank2- 60 de Puncte

                                       Rank3- 100 de Puncte

                                       Rank4;Rank5;Rank6-In functie de vechime si un comportament exceptional si multe curse efectuate

                                       Rank7-Leader-ul care va fi pus de Shad0W

                                       Model Raport de activitate: Nick:

                                                                                  Rank:

                                                                                  Numarul de stationarii in statii:

                                                                                  Poze [ Poza se face atunci cand opriti motorul autobuzului in statie]

 

 

 

 

Rank1: Conductor

Rank2: Sef de Autobuz

Rank3: Supervizor

Rank4,Rank5,Rank6: Tester

Rank7: Leader

Salarii: Rank1: 500.000$

            Rank2: 1.000.000$

            Rank3: 1.500.000$

            Rank4:  2.000.000$

            Rank5:  2.500.000$

            Rank6: 4.000.000$

            Rank7: 10.000.000$

Sediul Factiunii ar putea fi aici: http://imgur.com/a/kwUGJ ( In cladirea mai mica)

Iar autobuzele vor fi parcate in curtea aceasta din poze chiar in locurile de parcare marcate cu galben)

 

 

Cu ce crezi ca ar ajuta serverul: Ar fi mult mai RolePlay

Edited by AirSurfer
  • Upvote 2
Posted

Sugestie: Hitmanii cand au contract luat si /undercover cand vor omora tina sa nu primeasca Wanted


Cum crezi ca ar ajuta serverul:Ar ajuta mai mult hitmanii. Este mai frumos asa. P.S: daca nu au /undercover sa l-i dea wanted asa ar ajuta leaderul pt ca si-ar da seama imediat daca persoana respectiva cand a facut contractul avea /undercover.

Posted

Sugestie: Job Secundar - Miner


- Pentru a lua job-ul de miner in primul rand trebuie sa mergi in cariera de piatra din Las Venturas sau la cariera de carbune de langa Chilliad. (de preferat locul sa fie marcat cu o iconita)


- Apoi mergi la un CP unde dai /duty , odata ce esti "la datorie" mergi la o cariera de piatra sau la un moloz si dai /mine sau click (aici cum considerati dvs. ca este bine , tine de comenzi)


- Dupa ce ai colectat materialele mergi intr-un CP , iar acolo esti rasplatit cu o suma modica (cat considerati dvs.) si iti reiei activitatea dupa 30 de secunde.


Cum crezi ca ar ajuta serverul: Deocamdata este ceva unic in RO si cred ca ar reduce din monotonie.

  • Upvote 1
Posted

 

 

 

 

 

Legat de billiard :

#include <a_samp>

#define NO_BALL 403
#define CALA 0
#define POL 1
#define WHITE 14
#define BLACK 15
#define TABLE 16
#define POLYGONS 6

forward Float:GetVectorAngle(obj, obj2);
forward Float:GetVectorAngle_XY(Float:fx, Float:fy, Float:tx, Float:ty);
forward Float:GetVectorDistance_PL(playerid, obj);
forward Float:GetVectorDistance_OB(obj, obj2);
forward Float:GetDistance(Float:fx, Float:fy, Float:tx, Float:ty);
forward Float:GetDistancePointToLong(Float:px,Float:py, Float:px1,Float:py1, Float:px2,Float:py2);

forward OnEndBilliard();
forward OnBallInHole(ballid);
forward OnTimer();
forward BallProperties();
forward OnShowedTD(playerid);


enum GameEnum
{
	bool:Waiting,
	bool:Running,
	bool:WhiteInHole,
	bool:BlackInHole,
    Timer,
	Timer2,
	Player1,
	Player2,
	LastBall
};
new Game[GameEnum];

enum BallEnum
{
	ObjID,
	Float:x,
	Float:y,
	Float:z,
	Float:a,
	Float:speed,
	TouchID
};
new Ball[17][BallEnum];

enum EnumVertices
{
	Float:x,
	Float:y
};
new Polygon[POLYGONS][2][EnumVertices];

enum PolygonInfo
{
	bool:Progress,
	Vertices
};
new PolyResult[POLYGONS][PolygonInfo];

enum EnumPlayer
{
	bool:Sighting,
	bool:AfterSighting,
	bool:Turn,
	BBall,
	Points,
	SelectLR,
	SelectUD,
	Float:a,
	Text:T1,
	Text:T2,
	Text:T3,
	Text:T4,
	Text:T5,
	Text:T6,
	TDTimer
};
new Player[20][EnumPlayer];

new Float:Hole[6][4] =
{
	{2495.6413,-1670.6297, 2495.5415,-1670.7099}, // 1  12
	{2496.4323,-1670.6297, 2496.5825,-1670.6398}, // 2  3
	{2497.3632,-1670.6297, 2497.4433,-1670.7299}, // 4  5
	{2497.4633,-1671.5506, 2497.3732,-1671.6607}, // 6  7
	{2496.5725,-1671.6607, 2496.4323,-1671.6607}, // 8  9
	{2495.6315,-1671.6607, 2495.5415,-1671.5606}  // 10 11
};

new Char[2][] =
{
	{"(0)"},
	{"(-)"}
};

public OnFilterScriptInit()
{
	for(new i = 0; i < 20; i++)
	{
	    Player[i][T1] = TextDrawCreate(481.000000,353.000000," ");
    	TextDrawUseBox(Player[i][T1],1);
    	TextDrawTextSize(Player[i][T1],602.000000,0.000000);
    	TextDrawLetterSize(Player[i][T1],0.359999,1.100000);
    	TextDrawSetShadow(Player[i][T1],1);
    	TextDrawColor(Player[i][T1],227275519);
    	TextDrawBoxColor(Player[i][T1],227275314);

		Player[i][T2] = TextDrawCreate(475.000000,344.000000," ");
		TextDrawColor(Player[i][T2],4294967295);
	    TextDrawSetShadow(Player[i][T2],1);
	    
	    Player[i][T3] = TextDrawCreate(481.000000,313.000000," ");
    	TextDrawUseBox(Player[i][T3],1);
    	TextDrawTextSize(Player[i][T3],635.000000,0.000000);
    	TextDrawLetterSize(Player[i][T3],0.359999,1.100000);
    	TextDrawSetShadow(Player[i][T3],1);
    	TextDrawColor(Player[i][T3],227275519);
    	TextDrawBoxColor(Player[i][T3],227275314);

		Player[i][T4] = TextDrawCreate(475.000000,304.000000," ");
		TextDrawColor(Player[i][T4],4294967295);
	    TextDrawSetShadow(Player[i][T4],1);
	    
	    Player[i][T5] = TextDrawCreate(481.000000,273.000000," ");
    	TextDrawUseBox(Player[i][T5],1);
    	TextDrawTextSize(Player[i][T5],635.000000,0.000000);
    	TextDrawLetterSize(Player[i][T5],0.359999,1.100000);
    	TextDrawSetShadow(Player[i][T5],1);
    	TextDrawColor(Player[i][T5],227275519);
    	TextDrawBoxColor(Player[i][T5],227275314);

		Player[i][T6] = TextDrawCreate(475.000000,264.000000," ");
		TextDrawColor(Player[i][T6],4294967295);
	    TextDrawSetShadow(Player[i][T6],1);
	}
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/bilard", cmdtext, true, 10) == 0)
	{
	    SetPlayerPos(playerid,2499.3174,-1683.8401,13.4014);
	    return 1;
	}
	if (strcmp("/bilard-start", cmdtext, true, 10) == 0)
	{
		if(Game[Waiting] == false && Game[Running] == false)
		{
			Game[Waiting] = true;
			Game[Player1] = playerid;
			Game[LastBall] = -1;
			Player[playerid][Points] = 7;
			
			TextDrawSetString(Player[playerid][T1],"inamicul ...");
	    	TextDrawShowForPlayer(playerid,Player[playerid][T1]);

	   		TextDrawSetString(Player[playerid][T2],"a?teptare");
	    	TextDrawShowForPlayer(playerid,Player[playerid][T2]);
	    	GivePlayerWeapon(playerid,7,1);
	    	
	    	new name[24];
	    	new str[100];
			name = GetName(playerid);
			format(str,sizeof(str),"%s de a?teptare pentru un adversar. Tip Billiard se alature pentru a concura împotriva gazda.",name);
	    	for(new i = 0; i < 20; i++)
	    	{
	    	    if(IsPlayerConnected(i) == 1 && playerid != i)
				{
	    	        TextDrawSetString(Player[i][T1],str);
					TextDrawShowForPlayer(i,Player[i][T1]);
					
					TextDrawSetString(Player[i][T2],"Bilard");
	    			TextDrawShowForPlayer(i,Player[i][T2]);
	    	    }
	    	    Player[i][BBall] = NO_BALL;
	    	}
			
		    Ball[0][ObjID] = CreateObject(3100, 2497.0749511719, -1670.9591064453, 13.199293525696, 0, 0, 0); //CALA
			Ball[1][ObjID] = CreateObject(3101, 2497.0034179688, -1671.01171875, 13.199293525696, 0, 0, 0); //CALA
			Ball[2][ObjID] = CreateObject(3102, 2497.0034179688, -1671.1900634766, 13.199293525696, 0, 0, 0); //CALA
			Ball[3][ObjID] = CreateObject(3103, 2496.8696289063, -1671.1865234375, 13.199293525696, 0, 0, 0); //CALA
			Ball[4][ObjID] = CreateObject(3104, 2496.9370117188, -1671.0673828125, 13.199293525696, 0, 0, 0); //CALA
			Ball[5][ObjID] = CreateObject(3105, 2497.072265625, -1671.2313232422, 13.199293525696, 0, 0, 0); //CALA
			Ball[6][ObjID] = CreateObject(3002, 2496.8068847656, -1671.1413574219, 13.199293525696, 0, 0, 0); //CALA

			Ball[7][ObjID] = CreateObject(2995, 2496.8703613281, -1671.0987548828, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[8][ObjID] = CreateObject(2996, 2497.0031738281, -1671.2750244141, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[9][ObjID] = CreateObject(2997, 2497.0705566406, -1671.3179931641, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[10][ObjID] = CreateObject(2998, 2497.0759277344, -1671.0457763672, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[11][ObjID] = CreateObject(2999, 2497.0063476563, -1671.1011962891, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[12][ObjID] = CreateObject(3000, 2497.0734863281, -1671.1456298828, 13.199293525696, 0, 0, 0); //POLOWKA
			Ball[13][ObjID] = CreateObject(3001, 2496.9333496094, -1671.2292480469, 13.199293525696, 0, 0, 0); //POLOWKA

			Ball[WHITE][ObjID] = CreateObject(3003, 2495.8618164063, -1671.1704101563, 13.209293525696, 0, 0, 0); //Biala
			Ball[BLACK][ObjID] = CreateObject(3106, 2496.9375, -1671.1451416016, 13.199293525696, 0, 0, 0); //Czarna
			Ball[TABLE][ObjID] = CreateObject(2964, 2496.4970703125, -1671.1528320313, 12.265947036743, 0, 0, 0); //Stol

			CreatePolygon(2495.6413,-1670.6297, 2496.4323,-1670.6297);
			CreatePolygon(2496.5825,-1670.6398, 2497.3632,-1670.6297);
			CreatePolygon(2497.4433,-1670.7299, 2497.4633,-1671.5506);
			CreatePolygon(2497.3732,-1671.6607, 2496.5725,-1671.6607);
			CreatePolygon(2496.4323,-1671.6607, 2495.6315,-1671.6607);
			CreatePolygon(2495.5415,-1671.5606, 2495.5415,-1670.7099);
		}
		return 1;
	}
	if (strcmp("/stop", cmdtext, true, 10) == 0)
	{
	    if(Game[Waiting] == true || Game[Running] == true)
	    {
			KillTimer(Game[Timer]);
			KillTimer(Game[Timer2]);
			for(new i = 0; i < 17; i++)
			{
	    		DestroyObject(Ball[i][ObjID]);
 	    	}
 	    	
 	    	if(Game[Waiting] == true)
 	    	    Game[Waiting] = false;
 	    	    
 	    	if(Game[Running] == true)
 	    	    Game[Running] = false;
 	    	    
			Game[WhiteInHole] = false;
			Game[BlackInHole] = false;
 	    	    
 	    	Player[Game[Player1]][Sighting] = false;
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T1]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T2]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T3]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T4]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T5]);
 	    	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T6]);
 	    	
 	    	Player[Game[Player2]][Sighting] = false;
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T1]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T2]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T3]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T4]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T5]);
 	    	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T6]);
	    }
	    return 1;
	}
	if (strcmp("/bilard-dolacz", cmdtext, true, 10) == 0)
	{
	    if(Game[Waiting] == true)
	    {
	        if(Game[Player1] != playerid)
	        {
	        	Game[Waiting] = false;
	        	Game[Running] = true;
	        	Game[Player2] = playerid;
	        	TextDrawHideForPlayer(playerid,Player[Game[Player1]][T1]);
	        	TextDrawHideForPlayer(playerid,Player[Game[Player1]][T2]);
	    		
	    		new str[50];
	    		new name[24];
	    		GivePlayerWeapon(playerid,7,1);
	    		
	    		new rand = random(2);
				if(rand == 0)
				{
				    name = GetName(Game[Player1]);
				    Player[Game[Player1]][Turn] = true;
				    Player[Game[Player2]][Turn] = false;
				}
				else if(rand == 1)
				{
				    name = GetName(Game[Player2]);
				    Player[Game[Player1]][Turn] = false;
				    Player[Game[Player2]][Turn] = true;
    			}
    			
    			for(new i = 0; i < 20; i++)
	    		{
	    		    if(IsPlayerConnected(i) == 1 && Game[Player1] != i && Game[Player2] != i)
					{
					    ShowMessage(i,"Bilard","Nu am avut timp sa va înscrie?i pentru joc. Ave?i posibilitatea sa a?tepta?i urmatoarea runda.");
					}
	 			}
				    
				Player[playerid][Points] = 7;
				format(str,sizeof(str),"gameplay-ul începe%s",name);
	    		ShowMessage(Game[Player1],"joc",str);
	    		ShowMessage(Game[Player2],"joc",str);
	    		
				new string[80];
				format(string,sizeof(string),"%s %d~n~%s %d",GetName(Game[Player1]),Player[Game[Player1]][Points],GetName(Game[Player2]),Player[Game[Player2]][Points]);
	    		TextDrawSetString(Player[Game[Player1]][T3],string);
	    		TextDrawSetString(Player[Game[Player1]][T4],"Bilard");
	    		TextDrawSetString(Player[Game[Player2]][T3],string);
	    		TextDrawSetString(Player[Game[Player2]][T4],"Bilard");
	    		
	    		TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T3]);
	    		TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T4]);
	    		
	    		TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T3]);
	    		TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T4]);
	    		
	        	for(new i = 0; i < 16; i++)
	        	{
					Ball[i][TouchID] = -1;
	        	}
	        }
	    }
	    return 1;
	}
	return 0;
}

public OnEndBilliard()
{
	for(new i = 0; i < 17; i++)
	{
	    DestroyObject(Ball[i][ObjID]);
    }

   	Game[Waiting] = false;
 	Game[Running] = false;
 	Game[WhiteInHole] = false;
    Game[BlackInHole] = false;
    
	Player[Game[Player1]][Sighting] = false;
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T1]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T2]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T3]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T4]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T5]);
	TextDrawHideForPlayer(Game[Player1],Player[Game[Player1]][T6]);
	
 	Player[Game[Player2]][Sighting] = false;
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T1]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T2]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T3]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T4]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T5]);
 	TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T6]);
}

public OnBallInHole(ballid)
{
	if(ballid != WHITE)
	{
    	DestroyObject(Ball[ballid][ObjID]);
    	Ball[ballid][speed] = 0;
    }
    else
    {
	     Ball[WHITE][speed] = 0.2;
         SetObjectPos(Ball[WHITE][ObjID],2495.8618164063, -1671.1704101563, 13.209293525696);
	     StopObject(Ball[WHITE][ObjID]);
	     Ball[WHITE][x] = 2495.8618164063;
	     Ball[WHITE][y] = -1671.1704101563;
	     Ball[WHITE][z] = 13.209293525696;
    }
	     
	Game[LastBall] = ballid;
	for(new i = 0; i < 16; i++)
	{
	    if(ballid == i)
	    {
	        if(ballid <= 6) //CALA
			{
			    if(Player[Game[Player1]][Turn] == true && Player[Game[Player1]][BBall] == NO_BALL)
			    {
			        Player[Game[Player1]][BBall] = CALA;
			        Player[Game[Player2]][BBall] = POL;
       			}
       			else if(Player[Game[Player2]][Turn] == true && Player[Game[Player2]][BBall] == NO_BALL)
       			{
       			    Player[Game[Player1]][BBall] = POL;
			        Player[Game[Player2]][BBall] = CALA;
       			}
	            
				if(Player[Game[Player1]][BBall] == CALA)
				    Player[Game[Player1]][Points]--;
				    
				else if(Player[Game[Player2]][BBall] == CALA)
				    Player[Game[Player2]][Points]--;
				
   			}
	            
	        else if(6 < ballid <= 13) //POLOWKA
	        {
                if(Player[Game[Player1]][Turn] == true && Player[Game[Player1]][BBall] == NO_BALL)
			    {
			        Player[Game[Player1]][BBall] = POL;
			        Player[Game[Player2]][BBall] = CALA;
       			}
       			else if(Player[Game[Player2]][Turn] == true && Player[Game[Player2]][BBall] == NO_BALL)
       			{
       			    Player[Game[Player1]][BBall] = CALA;
			        Player[Game[Player2]][BBall] = POL;
				}
	            
	            if(Player[Game[Player1]][BBall] == POL)
				    Player[Game[Player1]][Points]--;

				else if(Player[Game[Player2]][BBall] == POL)
				    Player[Game[Player2]][Points]--;
         	}

			else if(ballid == WHITE)
				Game[WhiteInHole] = true;
			    
			else if(ballid == BLACK)
			    Game[BlackInHole] = true;

	        break;
	    }
	}
	if(ballid != WHITE && ballid != BLACK)
	{
		new str[80];
		format(str,sizeof(str),"%s %s %d~n~%s %s %d",GetName(Game[Player1]),Char[Player[Game[Player1]][BBall]],Player[Game[Player1]][Points], GetName(Game[Player2]),Char[Player[Game[Player2]][BBall]],Player[Game[Player2]][Points]);
		TextDrawSetString(Player[Game[Player1]][T3],str);
		TextDrawSetString(Player[Game[Player2]][T3],str);
		TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T3]);
		TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T3]);
	}
}

public BallProperties()
{
	for(new i = 0; i < 16; i++)
	{
		if(Ball[i][speed] > 0.1)
	   	{
    		Ball[i][speed] = Ball[i][speed] / 1.4;
     		SetObjectSpeed(i,Ball[i][speed]);
    	}
   		else
    	{
    	    Ball[i][speed] = 0;
	        StopObject(Ball[i][ObjID]);
	        	
	        if(CheckAllBalls() == 1)
	        {
	            KillTimer(Game[Timer]);
	            KillTimer(Game[Timer2]);
	            
	            if(Game[LastBall] != - 1)
	            {
	                if(Game[LastBall] <= 6) //
					{
					    if(Player[Game[Player1]][BBall] == CALA)
					    {
					        Player[Game[Player1]][Turn] = true;
				   			Player[Game[Player2]][Turn] = false;
					    }
					    else if(Player[Game[Player2]][BBall] == CALA)
					    {
					        Player[Game[Player1]][Turn] = false;
				   			Player[Game[Player2]][Turn] = true;
					    }
					}
				    else if(6 < Game[LastBall] <= 13) //
	                {
	                    if(Player[Game[Player1]][BBall] == POL)
					    {
					        Player[Game[Player1]][Turn] = true;
				   			Player[Game[Player2]][Turn] = false;
					    }
					    else if(Player[Game[Player2]][BBall] == POL)
					    {
					        Player[Game[Player1]][Turn] = false;
				   			Player[Game[Player2]][Turn] = true;
					    }
	                }
	            }
	            else //
	            {
					if(Player[Game[Player1]][Turn] == true)
					{
				    	Player[Game[Player1]][Turn] = false;
				   		Player[Game[Player2]][Turn] = true;
					}
					else if(Player[Game[Player2]][Turn] == true)
					{
				   		Player[Game[Player1]][Turn] = true;
				   		Player[Game[Player2]][Turn] = false;
					}
	            }
	            
				TextDrawSetString(Player[Game[Player1]][T6],"coada");
				TextDrawSetString(Player[Game[Player2]][T6],"coada");
				TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T6]);
				TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T6]);
				
				if(Game[BlackInHole] == false)
				{
				    if(Game[WhiteInHole] == false)
				    {
    					if(Player[Game[Player1]][Turn] == true)
						{
				    		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
						}
						else if(Player[Game[Player2]][Turn] == true)
						{
				    		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
						}
					}
					else
					{
					    if(Player[Game[Player1]][Turn] == true)
			    		{
			        		Player[Game[Player1]][Turn] = false;
			        		Player[Game[Player2]][Turn] = true;
			        		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
			    		}
			   			else if(Player[Game[Player2]][Turn] == true)
			    		{
			        		Player[Game[Player1]][Turn] = true;
			        		Player[Game[Player2]][Turn] = false;
			        		TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
				    		TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
			    		}
			    		Game[WhiteInHole] = false;
			    		ShowMessage(Game[Player1],"Bilard","Se merge bila alba");
			    		ShowMessage(Game[Player2],"Bilard","Se merge bila alba);
					}
					TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T5]);
					TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T5]);
				}
				else
				{
 	    	   		Game[Waiting] = true;

 	    	   		Player[Game[Player1]][Sighting] = false;
 	    	   		Player[Game[Player2]][Sighting] = false;
 	    	   		TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T1]);
 	    			TextDrawHideForPlayer(Game[Player2],Player[Game[Player2]][T2]);

 	    			TextDrawSetString(Player[Game[Player1]][T4],"joc");
 	    			TextDrawSetString(Player[Game[Player2]][T4],"joc");
 	    			TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T4]);
 	    			TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T4]);

 	    			TextDrawSetString(Player[Game[Player1]][T3],"Am venit cu bila neagra");
 	    			TextDrawSetString(Player[Game[Player2]][T3],"Am venit cu bila neagra");
 	    			TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T3]);
 	   				TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T3]);

 	   				TextDrawSetString(Player[Game[Player1]][T6],"Victorii");
 	   				TextDrawSetString(Player[Game[Player2]][T6],"Victorii");
 	   				TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T6]);
 	   				TextDrawShowForPlayer(Game[Player2],Player[Game[Player2]][T6]);
				    if(Player[Game[Player1]][Points] == 0 || Player[Game[Player2]][Points] == 0)
				    {
				        if(Player[Game[Player1]][Turn] == true)
				        {
				            TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
			       		    TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
				        }
				        else if(Player[Game[Player2]][Turn] == true)
				        {
				            TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
			       		    TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
				        }
				    }
				    else
				    {
      					if(Player[Game[Player1]][Turn] == true)
			   			{
			       			TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player2]));
			       		    TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player2]));
			    		}
			    		else if(Player[Game[Player2]][Turn] == true)
			    		{
			       			TextDrawSetString(Player[Game[Player1]][T5],GetName(Game[Player1]));
			       			TextDrawSetString(Player[Game[Player2]][T5],GetName(Game[Player1]));
			   			}
					}
					
					Player[Game[Player1]][Turn] = false;
			    	Player[Game[Player2]][Turn] = false;
			    	Game[BlackInHole] = false;

			    	TextDrawShowForPlayer(Game[Player1],Player[Game[Player1]][T5]);
 	    			TextDrawShowForPlayer(Game[Player2],Player[Game[Player1]][T5]);

 	    			SetTimer("OnEndBilliard",10000,0);
				}
				Game[LastBall] = -1;
				break;
	        }
		}
	}
}

public OnTimer()
{
	new temp[2];
	for(new i = 0; i < 16; i++)
	{
	    for(new j = 0; j < 16; j++)
	    {
	        if(i != j)
	        {
        		if(GetVectorDistance_OB(Ball[i][ObjID],Ball[j][ObjID]) < 0.09)
				{
			    	if(Ball[i][TouchID] != j && Ball[j][TouchID] != i)
			    	{
        				if(Ball[i][speed] > 0.1)
						{
        		    		new Float:pos[6];
        		    		GetObjectPos(Ball[i][ObjID],pos[0],pos[1],pos[2]);
        		    		GetObjectPos(Ball[j][ObjID],pos[3],pos[4],pos[5]);
        		    
        		    		Ball[j][TouchID] = i;
        		   		    Ball[i][TouchID] = j;
        		    		temp[0] = i;
        		    		temp[1] = j;
        		    
        		    		Ball[j][a] = GetVectorAngle(Ball[i][ObjID],Ball[j][ObjID]);
        		    
        		    		Ball[j][speed] = Ball[i][speed];
        		    		if(Ball[i][speed] < 3)
        		    		{
        		       			Ball[i][a] = GetVectorAngle(Ball[i][ObjID],Ball[j][ObjID]) + 180;
        		    			Ball[i][speed] = Ball[i][speed] / 1.15; //1.5
        		    			pos[0] += 5 * floatsin(-Ball[i][a],degrees); //(Ball[i][speed] / 1.1)
        		    			pos[1] += 5 * floatcos(-Ball[i][a],degrees); //(Ball[i][speed] / 1.1)
        		    			MoveObject(Ball[i][ObjID],pos[0],pos[1],pos[2],Ball[i][speed]);
        		   			}
        		    		else if(Ball[i][speed] >= 3)
        		    		{
        		        		Ball[i][speed] = Ball[i][speed] / 1.15; //2
        		        		pos[0] += 5 * floatsin(-Ball[i][a],degrees); //Ball[i][speed] / 2) + random(25)
        		        		pos[1] += 5 * floatcos(-Ball[i][a],degrees); //Ball[i][speed] / 2) - random(25)
        		        		MoveObject(Ball[i][ObjID],pos[0],pos[1],pos[2],Ball[i][speed]);
        		    		}

							Ball[j][speed] = Ball[j][speed] / 1.1;
							pos[3] += 5 * floatsin(-Ball[j][a],degrees); //Ball[j][speed] / 1.3
							pos[4] += 5 * floatcos(-Ball[j][a],degrees); //Ball[j][speed] / 1.3
							MoveObject(Ball[j][ObjID],pos[3],pos[4],pos[5],Ball[j][speed]);
							
			    			Ball[i][x] = pos[0];
							Ball[i][y] = pos[1];
							Ball[i][z] = Ball[WHITE][z];
							Ball[j][x] = pos[3];
							Ball[j][y] = pos[4];
							Ball[j][z] = Ball[WHITE][z];
						}
        		    }
        		}
        	}
		}
  		new Float:pos[5];
		GetObjectPos(Ball[i][ObjID],pos[0],pos[1],pos[2]);
		for(new h = 0; h < 6; h++)
		{
		    if(PointInLong(0.04,pos[0],pos[1],Hole[h][0],Hole[h][1],Hole[h][2],Hole[h][3]) == 1)
		    {
		        CallRemoteFunction("OnBallInHole","d",i);
		        break;
		    }
		}
		for(new k = 0; k < POLYGONS; k++)
  		{
  		    if(PointInPolygon(pos[0],pos[1],k) == 1)
  		    {
  		        new Float:tmp[4];
  		        tmp[0] = pos[0];
  		        tmp[1] = pos[1];
  		        tmp[2] = pos[0];
  		        tmp[3] = pos[1];
  		        pos[0] += floatsin(-Ball[i][a] + 180,degrees) / 5;
				pos[1] += floatcos(-Ball[i][a] + 180,degrees) / 5;
				
				new Float:angle[2];
				angle[0] = GetVectorAngle_XY(tmp[0],tmp[1],Polygon[k][0][x],Polygon[k][0][y]);
				if(angle[0] > 0)
				{
				    angle[1] = angle[0] + 180;
				    if(angle[1] > 360)
				        angle[1] = angle[1] - 360;
				}
				else
				{
                    angle[1] = GetVectorAngle_XY(tmp[0],tmp[1],Polygon[k][0][x],Polygon[k][0][y]);
					angle[0] = angle[1] + 180;
					if(angle[0] > 360)
					    angle[0] = angle[0] - 360;

					if(angle[1] < 0)
					    angle[1] = angle[0] + 180;
				}
				
				new Float:stop = Ball[i][a] + 180;
				if(stop > 360)
				    stop = stop - 360;
				    
				if(angle[0] < angle[1])
				{
				    if(angle[0] < stop < angle[1])
						angle[0] = angle[0] + 90;

					else if(angle[1] < stop < 360 || 0 < stop < angle[0])
					{
						angle[0] = angle[1] + 90;
						if(angle[0] > 360)
				  			angle[0] = angle[0] - 360;
				    }
				}
				else if(angle[0] > angle[1])
				{
				    if(angle[0] > stop > angle[1])
				        angle[0] = angle[1] + 90;

					else if(angle[1] > stop > 0)
					{
					    angle[0] = angle[1] - 90;
					    if(angle[0] > 360)
			      			angle[0] = angle[0] - 360;
					}
					else if(360 > stop > angle[0])
					{
					    angle[0] = angle[0] + 90;
					    if(angle[0] > 360)
			      			angle[0] = angle[0] - 360;
					}
				}
				
				new Float:sraka[2];
				sraka[0] = tmp[0];
				sraka[1] = tmp[1];
				
				sraka[0] += floatsin(-angle[0],degrees) / 50;
				sraka[1] += floatcos(-angle[0],degrees) / 50;
				
				tmp[0] += floatsin(-angle[0],degrees) / 7;
				tmp[1] += floatcos(-angle[0],degrees) / 7;
				SetObjectPos(Ball[i][ObjID],sraka[0],sraka[1],13.199293525696);
				
				new Float:ang;
				new Float:dist;
				ang = GetVectorAngle_XY(pos[0],pos[1],tmp[0],tmp[1]);
				dist = GetDistance(pos[0],pos[1],tmp[0],tmp[1]);
				
				pos[0] += (dist * floatsin(-ang,degrees)) * 2;
				pos[1] += (dist * floatcos(-ang,degrees)) * 2;
				
				
				new Float:ang2;
				ang2 = GetVectorAngle_XY(pos[0],pos[1],tmp[2],tmp[3]);
				ang2 = ang2 + 180;
				
				tmp[2] += 5 * floatsin(-ang2,degrees);
				tmp[3] += 5 * floatcos(-ang2,degrees);
				
				MoveObject(Ball[i][ObjID],tmp[2],tmp[3],13.199293525696,Ball[i][speed]);
				Ball[i][x] = tmp[2];
				Ball[i][y] = tmp[3];
				if(ang2 > 360)
				    ang2 = ang2 - 360;

				Ball[i][a] = ang2;
  		        break;
  		    }
  		}
	}
	Ball[temp[0]][TouchID] = -1;
	Ball[temp[1]][TouchID] = -1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if(newkeys & 128)
	{
	    if(Player[playerid][Sighting] == false && CheckAllBalls() == 1 && Game[Running] == true && Player[playerid][Turn] == true)
	    {
	        new Float:dist = GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]);
	    	if(GetPlayerWeapon(playerid) == 7 && dist < 1.6)
	        {
	        	new Float:pos[7];
	        	GetObjectPos(Ball[WHITE][ObjID],pos[0],pos[1],pos[2]);
				GetPlayerPos(playerid,pos[3],pos[4],pos[5]);
				pos[6] = GetVectorAngle_XY(pos[3],pos[4],pos[0],pos[1]);
				Player[playerid][Sighting] = true;
				Player[playerid][AfterSighting] = true;
				Player[playerid][SelectLR] = 0;
				Player[playerid][SelectUD] = 5;
				
				TextDrawSetString(Player[playerid][T2],"Predkosc");
	    	    TextDrawShowForPlayer(playerid,Player[playerid][T2]);
	    	    
	    	    TextDrawSetString(Player[playerid][T1],"60 cm~w~/s");
	    	    TextDrawShowForPlayer(playerid,Player[playerid][T1]);
				
				if(0.9 <= dist <= 1.2)
				{
				    pos[3] += floatsin(-pos[6] + 180,degrees) * 0.3;
				    pos[4] += floatcos(-pos[6] + 180,degrees) * 0.3;
				}
				else if(dist < 0.9)
				{
				    pos[3] += floatsin(-pos[6] + 180,degrees) * 0.6;
				    pos[4] += floatcos(-pos[6] + 180,degrees) * 0.6;
				}
				SetPlayerPos(playerid,pos[3],pos[4],pos[5]);
				SetPlayerFacingAngle(playerid,pos[6] - 2.2);
				Player[playerid][a] = pos[6] - 2.2;
				
    			pos[3] += floatsin(-pos[6] - 10,degrees) * 0.2;
		  		pos[4] += floatcos(-pos[6] - 10,degrees) * 0.2;
		    	SetPlayerCameraPos(playerid,pos[3],pos[4],pos[2] + 0.5);
			    SetPlayerCameraLookAt(playerid,pos[0],pos[1],pos[2]);
			    ApplyAnimation(playerid,"POOL","POOL_Med_Start",1,0,0,0,1,0,1);
	    	}
   		}
	}
	else if(oldkeys & 128)
	{
	    if(Player[playerid][AfterSighting] == true)
	    {
	    	SetCameraBehindPlayer(playerid);
	    	ApplyAnimation(playerid,"POOL","POOL_Med_Shot_O",4.1,0,1,1,1,1,1);
	        
     		TextDrawHideForPlayer(playerid,Player[playerid][T1]);
	   		TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	   		Player[playerid][AfterSighting] = false;

	   		if(Player[playerid][Sighting] == true)
	   		    Player[playerid][Sighting] = false;
	   	}
	}
	
	if(newkeys & KEY_FIRE)
	{
	    if(Player[playerid][Sighting] == true)
	    {
	        new Float:pos[7];
	    	GetObjectPos(Ball[WHITE][ObjID],pos[0],pos[1],pos[2]);
	    	
	    	Game[Timer] = SetTimer("OnTimer",10,1);
	    	Game[Timer2] = SetTimer("BallProperties",200,1);
	    	
	    	TextDrawHideForPlayer(playerid,Player[playerid][T1]);
	        TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	        Player[playerid][Sighting] = false;
	    	
	    	if(Player[playerid][a] > 360)
				Player[playerid][a] = Player[playerid][a] - 360;

			else if(Player[playerid][a] < 0)
			    Player[playerid][a] = 360 + Player[playerid][a];
	    	
			Ball[WHITE][a] = Player[playerid][a];
				   
	    	pos[0] += 5 * floatsin(-Ball[WHITE][a],degrees);
	    	pos[1] += 5 * floatcos(-Ball[WHITE][a],degrees);
			Ball[WHITE][x] = pos[0];
			Ball[WHITE][y] = pos[1];
			Ball[WHITE][z] = pos[2];
			Ball[WHITE][speed] = Player[playerid][SelectUD] / 1.5;
			
			new Float:pp[4];
			GetPlayerPos(playerid,pp[0],pp[1],pp[2]);
			GetPlayerFacingAngle(playerid,pp[3]);
			pp[0] += floatsin(-pp[3] - 90,degrees) * 0.3;
			pp[1] += floatcos(-pp[3] - 90,degrees) * 0.3;
			SetPlayerPos(playerid,pp[0],pp[1],pp[2]);
			
			SetPlayerCameraPos(playerid,2496.4970703125, -1671.1528320313, 12.275947036743 + 5);
			SetPlayerCameraLookAt(playerid,2496.4970703125, -1671.1528320313, 12.275947036743);
			ApplyAnimation(playerid,"POOL","POOL_Med_Shot",4.1,0,1,1,1,1,1);
	    }
	}
	return 1;
}

public OnPlayerUpdate(playerid)
{
	if(Player[playerid][Sighting] == true)
	{
	    if(GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]) < 1.6)
	    {
	    	new key[3];
	    	new Float:pos[3];
	    	GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    		GetPlayerKeys(playerid,key[0],key[1],key[2]);
	    	if(key[2] == KEY_LEFT && Player[playerid][SelectLR] < 10)
	    	{
	    	    new Float:angle;
	    	    new Float:angXY;
				GetPlayerFacingAngle(playerid,angle);
				
				Player[playerid][SelectLR]++;
			
				pos[0] += floatsin(-angle - 90,degrees) / 20;
				pos[1] += floatcos(-angle - 90,degrees) / 20;
			
				new Float:dist = GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]);
				new Float:pp[3];
				GetObjectPos(Ball[WHITE][ObjID],pp[0],pp[1],pp[2]);
				angXY = GetVectorAngle_XY(pos[0],pos[1],pp[0],pp[1]);
			
				if(0.9 <= dist <= 1.2)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.3;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.3;
				}
				else if(dist < 0.9)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.6;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.6;
				}
				SetPlayerPos(playerid,pos[0],pos[1],pos[2]);
				SetPlayerFacingAngle(playerid,angXY - 2.2);
				Player[playerid][a] = angXY - 2.2;
			
				pos[0] += floatsin(-angXY - 10,degrees) * 0.2;
 				pos[1] += floatcos(-angXY - 10,degrees) * 0.2;
		   	 	SetPlayerCameraPos(playerid,pos[0],pos[1],pp[2] + 0.5);
	       		SetPlayerCameraLookAt(playerid,pp[0],pp[1],pp[2]);
	        	ApplyAnimation(playerid,"POOL","POOL_Med_Start",1,0,0,0,1,0,1);
	    	}
	    	else if(key[2] == KEY_RIGHT && Player[playerid][SelectLR] > -10)
	    	{
	    	    new Float:angle;
	    	    new Float:angXY;
				GetPlayerFacingAngle(playerid,angle);

				pos[0] += floatsin(-angle + 90,degrees) / 20;
				pos[1] += floatcos(-angle + 90,degrees) / 20;
				
				Player[playerid][SelectLR]--;

				new Float:dist = GetVectorDistance_PL(playerid,Ball[WHITE][ObjID]);
				new Float:pp[3];
				GetObjectPos(Ball[WHITE][ObjID],pp[0],pp[1],pp[2]);
				angXY = GetVectorAngle_XY(pos[0],pos[1],pp[0],pp[1]);
			
				if(0.9 <= dist <= 1.2)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.3;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.3;
				}
				else if(dist < 0.9)
				{
					pos[0] += floatsin(-angXY + 180,degrees) * 0.6;
					pos[1] += floatcos(-angXY + 180,degrees) * 0.6;
				}
				SetPlayerPos(playerid,pos[0],pos[1],pos[2]);
				SetPlayerFacingAngle(playerid,angXY - 2.2);
				Player[playerid][a] = angXY - 2.2;

				pos[0] += floatsin(-angXY - 10,degrees) * 0.2;
 				pos[1] += floatcos(-angXY - 10,degrees) * 0.2;
		    	SetPlayerCameraPos(playerid,pos[0],pos[1],pp[2] + 0.5);
	        	SetPlayerCameraLookAt(playerid,pp[0],pp[1],pp[2]);
	        	ApplyAnimation(playerid,"POOL","POOL_Med_Start",1,0,0,0,1,0,1);
	    	}
	    	else if(key[1] == KEY_UP || key[1] == KEY_DOWN)
	    	{
	    	    if(key[1] == KEY_UP && 0 < Player[playerid][SelectUD] < 8)
	    	    {
					Player[playerid][SelectUD]++;
					
					if(Player[playerid][TDTimer] != 0)
	    	    	{
	    	        	KillTimer(Player[playerid][TDTimer]);
	    				Player[playerid][TDTimer] = 0;
	    	    	}

	    	    	TextDrawSetString(Player[playerid][T2],"Predkosc");
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T2]);

	    	    	new str[20];
	    	    	new length = (Player[playerid][SelectUD] / 2) * 30;
	    	    	
	    	    	if(length == 0)
						length = 15;
						
	    	   		format(str,sizeof(str),"%d cm~w~/s",length);
	    	    	TextDrawSetString(Player[playerid][T1],str);
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T1]);
				}
	    	    else if(key[1] == KEY_DOWN && 1 < Player[playerid][SelectUD] <= 8)
		  		{
	    	        Player[playerid][SelectUD]--;
	    	        
	    	        if(Player[playerid][TDTimer] != 0)
	    	    	{
	    	        	KillTimer(Player[playerid][TDTimer]);
	    				Player[playerid][TDTimer] = 0;
	    	    	}

	    	    	TextDrawSetString(Player[playerid][T2],"Predkosc");
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T2]);

	    	    	new str[20];
					new length = (Player[playerid][SelectUD] / 2) * 30;
					
					if(length == 0)
						length = 15;
						
	    	   		format(str,sizeof(str),"%d cm~w~/s",length);
	    	    	TextDrawSetString(Player[playerid][T1],str);
	    	    	TextDrawShowForPlayer(playerid,Player[playerid][T1]);
      			}
	    	}
		}
    }
	return 1;
}

public OnShowedTD(playerid)
{
	TextDrawHideForPlayer(playerid,Player[playerid][T1]);
	TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	Player[playerid][TDTimer] = 0;
}

stock SetObjectSpeed(sysobj, Float:speedy)
{
	MoveObject(Ball[sysobj][ObjID],Ball[sysobj][x],Ball[sysobj][y],Ball[sysobj][z],speedy);
}

stock CheckAllBalls()
{
	for(new i = 0; i < 16; i++)
	{
	    if(Ball[i][speed] != 0)
	        return 0;
	    else if(i == 15)
	    {
	        if(Ball[i][speed] == 0)
	            return 1;
	    }
	}
	return 0;
}

stock Float:GetVectorAngle(obj, obj2)
{
	new Float:vector[3];
	new Float:pos[6];
	GetObjectPos(obj,pos[0],pos[1],pos[2]);
	GetObjectPos(obj2,pos[3],pos[4],pos[5]);
	vector[0] = pos[3] - pos[0];
	vector[1] = pos[4] - pos[1];
	vector[2] = atan(-(vector[0] / vector[1]));
	if(vector[1] < 0)
	    vector[2] = vector[2] >= 180 ? vector[2] - 180 : vector[2] + 180;
	    
	return vector[2];
}

stock Float:GetVectorAngle_XY(Float:fx, Float:fy, Float:tx, Float:ty)
{
	new Float:vector[3];
	vector[0] = tx - fx;
	vector[1] = ty - fy;
	vector[2] = atan(-(vector[0] / vector[1]));
	if(vector[1] < 0)
	    vector[2] = vector[2] >= 180 ? vector[2] - 180 : vector[2] + 180;

	return vector[2];
}

stock Float:GetVectorDistance_PL(playerid, obj)
{
    new Float:pos[6];
	GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
	GetObjectPos(obj,pos[3],pos[4],pos[5]);
	return floatsqroot(floatpower(pos[3] - pos[0],2) + floatpower(pos[4] - pos[1],2) + floatpower(pos[5] - pos[2],2));
}

stock Float:GetVectorDistance_OB(obj, obj2)
{
	new Float:pos[6];
	GetObjectPos(obj,pos[0],pos[1],pos[2]);
	GetObjectPos(obj2,pos[3],pos[4],pos[5]);
	return floatsqroot(floatpower(pos[3] - pos[0],2) + floatpower(pos[4] - pos[1],2) + floatpower(pos[5] - pos[2],2));
}

stock Float:GetDistance(Float:fx, Float:fy, Float:tx, Float:ty)
{
	return floatsqroot(floatpower(tx - fx,2) + floatpower(ty - fy,2));
}

stock Float:GetDistancePointToLong(Float:px,Float:py, Float:px1,Float:py1, Float:px2,Float:py2)
{
    new Float:vec[3];
	vec[0] = GetDistance(px1,py1,px2,py2);
	if((vec[1] = GetDistance(px,py,px1,py1)) < vec[0] && (vec[2] = GetDistance(px,py,px2,py2)) < vec[0])
	{
	    new Float:opt[2];
		opt[0] = (vec[0] + vec[1] + vec[2]) / 2;
	    opt[1] = floatsqroot(opt[0] * (opt[0] - vec[0]) * (opt[0] - vec[1]) * (opt[0] - vec[2]));
		opt[1] = ((opt[1] * 2) / vec[0]);
		return opt[1];
	}
	return 0.0;
}


stock PointInLong(Float:size, Float:px,Float:py, Float:px1,Float:py1, Float:px2,Float:py2)
{
	new Float:vec[3];
	vec[0] = GetDistance(px1,py1,px2,py2);
	if((vec[1] = GetDistance(px,py,px1,py1)) < vec[0] && (vec[2] = GetDistance(px,py,px2,py2)) < vec[0])
	{
	    new Float:opt[2];
		opt[0] = (vec[0] + vec[1] + vec[2]) / 2;
	    opt[1] = floatsqroot(opt[0] * (opt[0] - vec[0]) * (opt[0] - vec[1]) * (opt[0] - vec[2]));
		opt[1] = ((opt[1] * 2) / vec[0]) * 2;
		if(opt[1] < size)
		    return 1;
	}
	return 0;
}

stock CreatePolygon(Float:px1,Float:py1, Float:px2,Float:py2)
{
	for(new i = 0; i < POLYGONS; i++)
	{
	    if(PolyResult[i][Progress] == false)
	    {
			PolyResult[i][Progress] = true;
			PolyResult[i][Vertices] = 2;

			Polygon[i][0][x] = px1;
			Polygon[i][0][y] = py1;

			Polygon[i][1][x] = px2;
			Polygon[i][1][y] = py2;
			return i;
	    }
	}
	return 0;
}

stock ShowMessage(playerid, message1[], message2[])
{
	if(Player[playerid][TDTimer] != 0)
	{
	    KillTimer(Player[playerid][TDTimer]);
	    Player[playerid][TDTimer] = 0;
	}
	
	TextDrawHideForPlayer(playerid,Player[playerid][T1]);
    TextDrawHideForPlayer(playerid,Player[playerid][T2]);
	TextDrawSetString(Player[playerid][T2],message1);
	TextDrawSetString(Player[playerid][T1],message2);
	TextDrawShowForPlayer(playerid,Player[playerid][T1]);
	TextDrawShowForPlayer(playerid,Player[playerid][T2]);
	
	new space;
	for(new i = 0; i < strlen(message2); i++)
	{
		if(message2[i] == ' ')
		    space++;
	}
	
	if(space != 0)
		Player[playerid][TDTimer] = SetTimerEx("OnShowedTD",space * 3000,0,"d",playerid);
		
	else
	    Player[playerid][TDTimer] = SetTimerEx("OnShowedTD",3000,0,"d",playerid);
}

stock PointInPolygon(Float:px, Float:py, polygonid)
{
	if(PolyResult[polygonid][Progress] == true)
	{
		for(new i = 0; i < PolyResult[polygonid][Vertices]; i++)
		{
			if(i == PolyResult[polygonid][Vertices] - 1)
			{
			    if(PointInLong(0.06,px,py,Polygon[polygonid][i][x],Polygon[polygonid][i][y],Polygon[polygonid][0][x],Polygon[polygonid][0][y]) == 1)
		        	return 1;
			}
			else
			{
				if(PointInLong(0.06,px,py,Polygon[polygonid][i][x],Polygon[polygonid][i][y],Polygon[polygonid][i + 1][x],Polygon[polygonid][i + 1][y]) == 1)
		      		return 1;
   			}
		}
	}
	return 0;
}

stock GetName(playerid)
{
	new name[24];
	GetPlayerName(playerid,name,24);
	return name;
}

stock Release()
{
	for(new i = 0; i < 20; i++)
	{
	    TextDrawHideForPlayer(i,Player[i][T1]);
	    TextDrawHideForPlayer(i,Player[i][T2]);
	    TextDrawHideForPlayer(i,Player[i][T3]);
	    TextDrawHideForPlayer(i,Player[i][T4]);
	    TextDrawHideForPlayer(i,Player[i][T5]);
	    TextDrawHideForPlayer(i,Player[i][T6]);
	    TextDrawDestroy(Player[i][T1]);
     	TextDrawDestroy(Player[i][T2]);
     	TextDrawDestroy(Player[i][T3]);
     	TextDrawDestroy(Player[i][T4]);
     	TextDrawDestroy(Player[i][T5]);
     	TextDrawDestroy(Player[i][T6]);
	}
	if(Game[Running] == true || Game[Waiting] == true)
	{
		KillTimer(Game[Timer]);
		KillTimer(Game[Timer2]);
		for(new i = 0; i < 17; i++)
		{
	    	DestroyObject(Ball[i][ObjID]);
 	    }
	}
}

@ ce zici :D  ?

Posted

 

Sugestie:Propun sa fie infintata o noua ''Mafie'' sa zicem asa pe server si anume Mafia CAMATARILOR.Aceasta mafie s-ar putea ocupa cu imprumutul de bani pentru alti playeri,sa zicem o suma pana in 10kk,de exemplu si acesti bani sa fie recuperati cu dobanda 30% sau 50% depinde de cat se hotareste.Daca un player imprumuta bani si nu mai vrea sa ii dea inapoi acesta va puteaa fi legat de camatari si pus in ''beciul'' acestora(in beci ma refer sa fie in hq lor un fel de inchisoare unde sa stea 30  de minute sa zicem).Sau daca nici dupa aceasta pedeapsa tot nu ar achita suma respectiva acesta va fi vanat de camatari si ii vor fi furati banii.Camatarii ar putea vedea ce bani detin playeri care au imprumatat bani de la ei ca playeri sa nu minta ca nu au destui bani.Camatarii se poat alia cu o anumita mafie existenta deja si sa ii ajute in caz de urmariri lungi si grele.

Cum crezi ca ar ajuta serverul:Daca va fi infiintata aceasta mafie server-ul va deveni mai real si astefel sigur vom castiga inca 100 de playeri,plus ca se vor crea si noi locuri de munca.

 

@ Shad0w  sper sa iti placa !

Posted

Sugestie: Propun ca la hitmani după ce au efectuat un contract, in caz că uită să-şi scoată undercover, după 30 sec să li se scoată automat /undercover.
Cum crezi ca ar ajuta serverul: Ar ajuta hitmanii şi s-ar evita reclamaţiile.

  • Upvote 4
Posted

Sugestie: SA se adauge factiunea NFS Club


Cum crezi ca ar ajuta serverul: AR fi totul mai distractiv ... ar mai avea playerii unde sa intre.....


 


In NFS Club toti sa aiba o masina personala ... sa mergem grupati prin oras...   Totul ar fi foarte frumos!

Posted

 

Sugestie: Hitmanii cand au contract luat si /undercover cand vor omora tina sa nu primeasca Wanted

Cum crezi ca ar ajuta serverul:Ar ajuta mai mult hitmanii. Este mai frumos asa. P.S: daca nu au /undercover sa l-i dea wanted asa ar ajuta leaderul pt ca si-ar da seama imediat daca persoana respectiva cand a facut contractul avea /undercover.

 

 

 

Sugestie: Hitmanii cand au contract luat si /undercover cand vor omora tina sa nu primeasca Wanted

Cum crezi ca ar ajuta serverul:Ar ajuta mai mult hitmanii. Este mai frumos asa. P.S: daca nu au /undercover sa l-i dea wanted asa ar ajuta leaderul pt ca si-ar da seama imediat daca persoana respectiva cand a facut contractul avea /undercover.

 

S-ar face abuzuri daca nu sar da wanted.

 

 

 

 

Sugestie: SA se adauge factiunea NFS Club

Cum crezi ca ar ajuta serverul: AR fi totul mai distractiv ... ar mai avea playerii unde sa intre.....

 

In NFS Club toti sa aiba o masina personala ... sa mergem grupati prin oras...   Totul ar fi foarte frumos!

 

Nu cred ca are rost sa se adauge inca o factiune , mai degraba sa maresca limita de membri intro factiune

 

 

Sugestie: Propun ca la hitmani după ce au efectuat un contract, in caz că uită să-şi scoată undercover, după 30 sec să li se scoată automat /undercover.

Cum crezi ca ar ajuta serverul: Ar ajuta hitmanii şi s-ar evita reclamaţiile.

Good Ideea . Chiar ar fi mai bine ca uni stau undercover fara sa faca nimic.

 

 

Inca o sugestie ar fi Schimbarea sistem de shooting (din cate am vazut seamana cu Lag shooting si este enervant la duele)


	
	public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
	
	
	{
	
	
	 
	
	
	    if(issuerid != INVALID_PLAYER_ID && IsPlayerConnectedEx(issuerid))
	
	
	    {
	
	
	        if(tazer_out[issuerid])
	
	
	        {
	
	
	            if(GetPlayerWeapon(issuerid) == WEAPON_SILENCED)
	
	
	            {
	
	
	                if(GetDistanceBetweenPlayers(issuerid,playerid) < 10.0)
	
	
	                {
	
	
	                    TazePlayer(issuerid,playerid);
	
	
	                }
	
	
	            }
	
	
	        }
	
	
	    }
	
	
	    if(issuerid != INVALID_PLAYER_ID)
	
	
	    {
	
	
	        if(amount > 5.0 && weaponid != 0)
	
	
	        {
	
	
	            new Float:armor;
	
	
	            GetPlayerArmour(playerid,armor);
	
	
	            if(armor <= 0.0)
	
	
	            {
	
	
	                //TextDrawShowForPlayer(playerid,crash_screen);
	
	
	                //SetTimerEx("HideCrash",250,0,"i",playerid);
	
	
	                //SetPlayerDrunkLevel(playerid,(GetPlayerDrunkLevel(playerid) + 4000));
	
	
	            }
	
	
	        }
	
	
	    }
	
	
	     new Float:HP;
	
	
	    GetPlayerHealth(playerid, HP);
	
	
	    if(weaponid == 24) SetPlayerHealth(playerid, HP-50);//DesertEagle
	
	
	    if(weaponid == 22) SetPlayerHealth(playerid, HP-50);//Colt45
	
	
	    if(weaponid == 32) SetPlayerHealth(playerid, HP-10);//Tec9
	
	
	    if(weaponid == 28) SetPlayerHealth(playerid, HP-10);//Uzi
	
	
	    if(weaponid == 23) SetPlayerHealth(playerid, HP-50);//SilencedColt
	
	
	    if(weaponid == 31) SetPlayerHealth(playerid, HP-35);//M4
	
	
	    if(weaponid == 30) SetPlayerHealth(playerid, HP-40);//AK
	
	
	    if(weaponid == 29) SetPlayerHealth(playerid, HP-18);//MP5
	
	
	    if(weaponid == 34) SetPlayerHealth(playerid, HP-300);//SniperRifle
	
	
	    if(weaponid == 33) SetPlayerHealth(playerid, HP-35);//CuntGun
	
	
	    if(weaponid == 25) SetPlayerHealth(playerid, HP-100);//PumpShotgun
	
	
	    if(weaponid == 27) SetPlayerHealth(playerid, HP-70);//Spaz12
	
	
	    return 1;
	
	
	}
	

 

O alta propunere ar fi schimbarea economiei in una mai grea adica faci bani prea usor zici ca este godfather sa se scada la 10k la 10 minute de fac bani la toate joburile

-Sa se scumpeasca masinile

-Sa se adauge factiune Tow Truck Company

-War-ul sa fie facut pe kill-uri

-Sa se modifice regulamentul astfel ca dm sa nu se pedepseasca cu jail ci cu warn/ban (deoarece toata lumea face dm pe server)

 

Mai revin cu edit

Daca tu ai o rajnita de pc si ai lag asta e , noi NU avem la shooting.

 

Posted (edited)

Sugestie: Sa se adauge Bike la DS.


Cum crezi ca ar ajuta serverul: Ar fi mai distractiv si mai RP, iar orice player sa poata sa detina una indiferent de level.Asa un player care intra pe server si nu are bani de o masina sau altceva isi cumpara o bicicleta pana aduna banii.


Edited by DraKe
  • Upvote 2
Posted

Cititi tot !!

Sa se adauge factiune NFS cu urmatorul regulament ( facut de mine ):

 

♦Regulament NFS-Club♦
-Pentru a putea intra in acest Club trebuie sa tii cont de urmatoarele reguli

● In Clubul NFS este interzis limbajul vulgar! [Fara injurii intre membrii]!
● Nu este permis sa divulji locatia antrenamentelor/sedintelor/testelor si mai ales "Cheia cum puteti trece un anumit test" esti dat afara din club.
● Nu aveti voie sa va omorati intre voi va duce la excluderea din club.
● Pentru a putea da teste pentru rank trebuie sa faceti cerere la "cerere teste" nu pe /nfs
● Testele pentru rank se vor da odata la 5 zile
● Nu aveti voie sa cereti rank aiurea,la prima abatere veti primi un adevertisment verbal, la a doua veti fi demis.
● Masina trebuie sa aive paintjob+nos.
● P.D/F.B.I/N.G/Medics interzis ^^
●Nu aveti voie sa faceti posturi intre colegi ,in caz contrar demis instant
● Au voie doar masinile cu care iti inregistreaza bounty:
♠ Sultan
♠ Elegy
♠ Flash
♠ Jester
♠ Blade
♠ Savana
●Fara infernus,bullet,turismo,etc doar la rank5 only se pot face curse cu ele si doar intre rank5 pentru a fi echilibrat.

 

+1 daca sunteti de acord

  • Upvote 1
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

moduri samp