Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Paintball

Статус
В этой теме нельзя размещать новые ответы.

Artem_Sneil

Новичок
Скрины:

И так приступим:
Ко всем #Define

Код:
#define         TIME_PAINTBALL      900
#define         REGISTER_PAINTBALL  600
Теперь глобальные переменные:
PHP:
new strpaintball[1000];
new StartPaintBall;
new TimerPaintBall;
new TeamPain[MAX_PLAYERS];
new KillPain[MAX_PLAYERS];
new DeathPain[MAX_PLAYERS];
new RedPlayer;
new BluePlayer;
new RedScore;
new BlueScore;
new paintball;
new weaponpaintball[4];
Далее в Паблик OnGameModeInit
PHP:
Create3DTextLabel("ЗАПИСЬ НА ПЕЙНТБОЛ", COLOR_ORANGE, 2693.9631,-1708.9209,11.8478, 25.0, 0, 0);
Паблик OnGameModeExit
PHP:
TextDrawDestroy(RedTeam);
TextDrawDestroy(BlueTeam);
Паблик OnPlayerDisconnect

PHP:
	if(TeamPain[playerid] == 1) BluePlayer--;
	if(TeamPain[playerid] == 2) RedPlayer--;
	TeamPain[playerid] = 0;
	KillPain[playerid] = 0;
	DeathPain[playerid] = 0;
Паблик OnPlayerDeath

PHP:
if(StartPaintBall == 1 && TeamPain[playerid] != 0)
    {
        if(TeamPain[playerid] == 1) BluePlayer --;
		if(TeamPain[playerid] == 2) RedPlayer --;
        TeamPain[playerid] = 0;
        KillPain[playerid] = 0;
        DeathPain[playerid] = 0;
        SCM(playerid, COLOR_WHITE,"Вы были дисквалефицированы!");
    }
if(TeamPain[playerid] != 0 && TeamPain[killerid] != 0 && TeamPain[killerid] != TeamPain[playerid] && StartPaintBall == 2)
	{
	    DeathPain[playerid] ++;
	    KillPain[killerid] ++;
	    SetPlayerHealthAC(killerid, 100.0);
	    new mes[128];
	    format(mes, sizeof(mes), "~r~Kill: %d Death: %d", KillPain[killerid], DeathPain[killerid]);
		GameTextForPlayer(killerid,mes, 2000, 4);
	 	format(mes, sizeof(mes), "~r~Kill: %d Death: %d", KillPain[playerid], DeathPain[playerid]);
		GameTextForPlayer(playerid,mes, 2000, 4);
	    if(TeamPain[playerid] == 1) RedScore ++;
	    if(TeamPain[playerid] == 2) BlueScore ++;
     	foreach (new i : Player)
		{
		    if(TeamPain[i] == 0) continue;
		    new sttr[28];
	    	format(sttr,sizeof(sttr),"~r~TEAM RED: ~w~%d",RedScore);
			TextDrawSetString(RedTeam, sttr);
			format(sttr,sizeof(sttr),"~b~TEAM BLUE: ~w~%d",BlueScore);
			TextDrawSetString(BlueTeam, sttr);
		}
	}
В CMD:
PHP:
CMD:startpb(playerid, params[])
{
	if(StartPaintBall != 0) return SCM(playerid, COLOR_GREY,"Пейнтбол уже начат!");
	TimerPaintBall = REGISTER_PAINTBALL;
	StartPaintBall = 1;
	RedScore = 0, BlueScore = 0;
	RedPlayer = 0, BluePlayer = 0;
	SCMToAll(COLOR_YELLOW3,"SMS от СМИ: Начало пейнтбола через 10 минут.Желающим прибыть на стадион Лос Сантос");
 	foreach (new i : Player)
	{
		if(TeamPain[i] != 0 && gPlayerLogged[i] == true) TeamPain[i] = 0;
	}
    return true;
}
Тут пейнтбол может запустить любой игрок, можно добавить проверку на админа(У всех она своя)Мой пример:
PHP:
if(DostupForAdministration[playerid] == false || PlayerInfo[playerid][pAdmin] < 2) return SCM(playerid, -1, "Вы не авторизованы. (( Введите /alogin ))");
Если у вас есть CMD:get(или что то подобное), то просто добавить:
PHP:
	if(strcmp(inputtext, "paintball", true) == 0)
	{
		if(strlen(strpaintball) > 5 && StartPaintBall == 0) SPD(playerid, 0, DIALOG_STYLE_MSGBOX, "Отчет по матчу", strpaintball, "Закрыть", "");
		else SPD(playerid, 0, DIALOG_STYLE_MSGBOX, "Отчет по матчу", "\tМатч не состоялся!", "Закрыть", "");
		return true;
	}
Если же нету то:
PHP:
CMD:get(playerid,params[])
{
	new inputtext[16];
	if(sscanf(params,"s[16]",inputtext))
	{
		SCM(playerid, COLOR_GREY, "Введите: /get [название]");
		SCM(playerid, COLOR_GREY, "[N]: drugs, warehouse, paintball");
		return true;
	}
	if(strcmp(inputtext, "paintball", true) == 0)
	{
		if(strlen(strpaintball) > 5 && StartPaintBall == 0) SPD(playerid, 0, DIALOG_STYLE_MSGBOX, "Отчет по матчу", strpaintball, "Закрыть", "");
		else SPD(playerid, 0, DIALOG_STYLE_MSGBOX, "Отчет по матчу", "\tМатч не состоялся!", "Закрыть", "");
		return true;
	}
}
В сток SetPlayerSpawn(у всех по разному)
PHP:
if(StartPaintBall == 0 && TeamPain[playerid] != 0)
	{
		TeamPain[playerid] = 0;
		SetPlayerPosition(playerid, 2690.1577,-1693.4609,9.7754);
		TextDrawHideForPlayer(playerid, BlueTeam);
		TextDrawHideForPlayer(playerid, RedTeam);
		if(PlayerInfo[playerid][pMember] != 0) SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
		else SetPlayerSkin(playerid, PlayerInfo[playerid][pChar]);
		SetPlayerToTeamColor(playerid);
	}
    if(TeamPain[playerid] != 0 && StartPaintBall == 2)
	{
	    SetPlayerHealthAC(playerid, 100.0);
        SetPlayerInterior(playerid, 0);
        new spawn = random(6);
        if(TeamPain[playerid] == 1)
		{
		    if(PlayerInfo[playerid][pSex] == 1) SetPlayerSkin(playerid, 21);
		    if(PlayerInfo[playerid][pSex] == 2)  SetPlayerSkin(playerid, 41);
		    SetPlayerPosition(playerid, SpawnBlueTeam[spawn][0],SpawnBlueTeam[spawn][1],SpawnBlueTeam[spawn][2]);
		    SetPlayerColor(playerid, COLOR_BLUE);

		}
		if(TeamPain[playerid] == 2)
		{
			if(PlayerInfo[playerid][pSex] == 1) SetPlayerSkin(playerid, 19);
			if(PlayerInfo[playerid][pSex] == 2)  SetPlayerSkin(playerid, 40);
			SetPlayerPosition(playerid, SpawnRedTeam[spawn][0],SpawnRedTeam[spawn][1],SpawnRedTeam[spawn][2]);
			SetPlayerColor(playerid, COLOR_RED);
		}
	    return true;
	}
Паблик OnPlayerPickUpPickup
PHP:
if(pickupid == weaponpaintball[0] && StartPaintBall == 2 && TeamPain[playerid] != 0) return GivePlayerWeaponAC(playerid, 24, 49);//Выдачу оружий ставим свою
	if(pickupid == weaponpaintball[1] && StartPaintBall == 2 && TeamPain[playerid] != 0) return GivePlayerWeaponAC(playerid, 25, 25);
	if(pickupid == weaponpaintball[2] && StartPaintBall == 2 && TeamPain[playerid] != 0) return GivePlayerWeaponAC(playerid, 34, 10);
	if(pickupid == weaponpaintball[3] && StartPaintBall == 2 && TeamPain[playerid] != 0) return GivePlayerWeaponAC(playerid, 29, 90);
	if(pickupid == paintball)
{
		if(StartPaintBall != 1) return SCM(playerid, COLOR_WHITE,"Регистрация закрыта!");
		if(TeamPain[playerid] != 0) return SCM(playerid, COLOR_WHITE,"Вы уже зарегистрированны!");
		if(RedPlayer > 14 && BluePlayer > 14) return SCM(playerid, COLOR_GREY,"Все места заняты.");
		if(RedPlayer == 0 && BluePlayer == 0 || BluePlayer < RedPlayer || RedPlayer == BluePlayer)
		{
		    SCM(playerid, -1,"Вы зарегестрированы на матч.Вы играете за команду {33AAFF}синих{FFFFFF}!");
			BluePlayer ++;
			TeamPain[playerid] = 1;
			KillPain[playerid] = 0;
			DeathPain[playerid] = 0;
			return true;
		}
		if(BluePlayer > RedPlayer)
		{
		    SCM(playerid, -1,"Вы зарегистрированы на матч.Вы играете за команду {FF0000}красных{FFFFFF}!");
		    RedPlayer ++;
			TeamPain[playerid] = 2;
			KillPain[playerid] = 0;
			DeathPain[playerid] = 0;
			return true;
		}
		return true;
	}
Паблик Update
PHP:
if(TimerPaintBall && (StartPaintBall == 1 || StartPaintBall == 2)) TimerPaintBall--;
    if(!TimerPaintBall && StartPaintBall == 1)
    {
		StartPaintBall = 2;
		TimerPaintBall = TIME_PAINTBALL;
		SCMToAll(COLOR_YELLOW3, "SMS от СМИ: Матч по пейнтболу начался, продолжительность 15 минут.");
		foreach (new i : Player)
	    {
			if(TeamPain[i] != 0) GameTextForPlayer(i,"~y~[START]", 2000, 4);
		}
	}
	if(TimerPaintBall == 5 && StartPaintBall == 1)
    {
        if(RedPlayer == 0 || BluePlayer == 0)
		{
		    foreach (new i : Player)
		    {
				if(TeamPain[i] != 0) TeamPain[i] = 0;
			}
		    SCMToAll(COLOR_YELLOW3, "SMS от СМИ:Мат по пейнтболу отменен из за недостатка участников.");
			RedPlayer = 0, BluePlayer = 0;
			StartPaintBall = 0;
		}
		else
		{
		    foreach (new i : Player)
		    {
		        if(TeamPain[i] == 0 || !gPlayerLogged[i]) continue;
			    new strr[28];
				format(strr,sizeof(strr),"~r~TEAM RED: ~w~%d",RedScore);
				TextDrawSetString(RedTeam, strr);
				TextDrawShowForPlayer(i, RedTeam);
				format(strr,sizeof(strr),"~b~TEAM BLUE: ~w~%d",BlueScore);
				TextDrawSetString(BlueTeam, strr);
				TextDrawShowForPlayer(i, BlueTeam);
				TogglePlayerControllableEx(i, 0);
				SetTimerEx("UnFreeze", 5000, false, "i",i);
				ResetPlayerWeaponEx(i);
				SetPlayerInterior(i, 0);
				SetPlayerArmourAC(i, 0);
				SetPlayerHealthAC(i, 100);
				new spawn = random(6);
		    	if(TeamPain[i] == 1)
		    	{
					SetPlayerPosition(i, SpawnBlueTeam[spawn][0],SpawnBlueTeam[spawn][1],SpawnBlueTeam[spawn][2]);
					if(PlayerInfo[i][pSex] == 1) SetPlayerSkin(i, 21);
				    if(PlayerInfo[i][pSex] == 2)  SetPlayerSkin(i, 41);
				    SetPlayerColor(i, COLOR_BLUE);
				}
		    	if(TeamPain[i] == 2)
		    	{
			 		SetPlayerPosition(i, SpawnRedTeam[spawn][0],SpawnRedTeam[spawn][1],SpawnRedTeam[spawn][2]);
			 		if(PlayerInfo[i][pSex] == 1) SetPlayerSkin(i, 19);
					if(PlayerInfo[i][pSex] == 2)  SetPlayerSkin(i, 40);
					SetPlayerColor(i, COLOR_RED);
			 	}
			}
		}
    }
	if(StartPaintBall == 2 && !TimerPaintBall)
	{
		SCMToAll(COLOR_YELLOW3, "SMS от СМИ:Матч по пейнтболу завершен (( для просмотра результатов введите: /get paintball ))");
		StartPaintBall = 0;
		new str[128], number = 0;
		format(str,sizeof(str),"{33AAFF}     Team Blue %d   {FFFFFF}||    {FF0000}%d Team Red\n\n",BlueScore, RedScore);
		strcat(strpaintball,str);
		foreach (new i : Player)
  		{
			if(TeamPain[i] == 0) continue;
			SetPlayerPosition(i, 2690.1577,-1693.4609,9.7754);
			if(PlayerInfo[i][pMember] != 0) SetPlayerSkin(i, PlayerInfo[i][pSkin]);
			else SetPlayerSkin(i, PlayerInfo[i][pChar]);
			ResetPlayerWeaponEx(i);
			SetPlayerHealthAC(i,PlayerInfo[i][pHealth]);
			SetPlayerToTeamColor(i);
			TextDrawHideForPlayer(i, BlueTeam);
			TextDrawHideForPlayer(i, RedTeam);
		    number++;
		    if(TeamPain[i] == 1)
		    {
				if(BlueScore > RedScore)
				{
				    SCM(i, COLOR_GREENOK,"Ваша команда победла! ваш приз составил: 30000$");
				    TransferMoney(-1,i,30000);
				}
		        GetPlayerName(i, sn, sizeof(sn));
		        format(str,sizeof(str),"{33AAFF}%s | Kill: %d | Death: %d \n",sn, KillPain[i], DeathPain[i]);
				strcat(strpaintball,str);
		    }
		    if(TeamPain[i] == 2)
		    {
		        if(BlueScore < RedScore)
				{
				    SCM(i, COLOR_GREENOK,"Ваша команда победила! ваш приз составил: 30000$");
				    TransferMoney(-1,i,30000);
				}
		        GetPlayerName(i, sn, sizeof(sn));
		        format(str,sizeof(str),"{FF0000}%s | Kill: %d | Death: %d\n",sn, KillPain[i], DeathPain[i]);
				strcat(strpaintball,str);
		    }
		    TeamPain[i] = 0;
		    KillPain[i] = 0;
		    DeathPain[i] = 0;
		}
	}
Ну и в у кого то паблик у кого то сток CreateTextDraws
PHP:
BlueTeam = TextDrawCreate(510.000000, 141.000000, "TEAM BLUE:");
	TextDrawBackgroundColor(BlueTeam, 255);
	TextDrawFont(BlueTeam, 1);
	TextDrawLetterSize(BlueTeam, 0.300000, 1.000000);
	TextDrawColor(BlueTeam, -1);
	TextDrawSetOutline(BlueTeam, 0);
	TextDrawSetProportional(BlueTeam, 1);
	TextDrawSetShadow(BlueTeam, 1);

	RedTeam = TextDrawCreate(510.000000, 152.000000, "TEAM RED:");
	TextDrawBackgroundColor(RedTeam, 255);
	TextDrawFont(RedTeam, 1);
	TextDrawLetterSize(RedTeam, 0.300000, 1.000000);
	TextDrawColor(RedTeam, -1);
	TextDrawSetOutline(RedTeam, 0);
	TextDrawSetProportional(RedTeam, 1);
	TextDrawSetShadow(RedTeam, 1);
Так-же в CreatePickups
PHP:
	paintball = CreatePickupAC(19134, 23, 2693.9631,-1708.9209,11.8478);
	weaponpaintball[0] = CreatePickupAC(348, 23, 1068.5187,2101.3992,10.8203);
	weaponpaintball[1] = CreatePickupAC(349, 23, 1080.0931,2103.7437,10.8203);
	weaponpaintball[2] = CreatePickupAC(358, 23, 1088.9740,2106.9214,10.8203);
	weaponpaintball[3] = CreatePickupAC(353, 23, 1092.9535,2103.1909,15.3504);
Ах да и в сток ResetPlayerStat
PHP:
	TeamPain[playerid] = 0;
	KillPain[playerid] = 0;
	DeathPain[playerid] = 0;
Думаю не чего не забыл.
Систему необходимо адаптировать под свой мод(не для новичков)
P.S. Строго не судите, это моя первая тема
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу