Доступ к готовым решениям

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

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

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

Мануал Система Бомбы (by Leon)

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

JIEON_COJIORS

Умник
Добрый день Ув.Пользователи сайта Pawno-info.ru
Сегодня я выкладываю свои сис-му бомбы!
Возможности бомбы:
1. Возможность поставить бомбу как на пол так и под машину
2. Возможность поставить бомбу как ручную так и с таймером
3. Возможность выбора времени таймера
Скрины:
И так приступим:

В начало:
PHP:
#define SCM                                        SendClientMessage
#define SPD                                        ShowPlayerDialog
#define c:0%; CMD:0%(playerid, params)
К всем new
PHP:
//===========================[Бомба террористов]================================
new CarBomb[MAX_PLAYERS];//ID машины
new BTimer[MAX_PLAYERS];//Таймер
new Float:BombPosP[MAX_PLAYERS][3];//Позиция
new TimeBomb[MAX_PLAYERS];//Время до взрыва
new Text:Bomb[2];//TD Бомбы
new PlayerText:TimerBomb[MAX_PLAYERS];//TD время бомбы
new Text:TDBomba;//TD бомба
В public OnPlayerConnect(playerid)
PHP:
	//=====================================/BOMBA===============================
	TimerBomb[playerid] = CreatePlayerTextDraw(playerid, 559.000000, 262.062500, "0:00");
	PlayerTextDrawLetterSize(playerid, TimerBomb[playerid], 0.449999, 1.600000);
	PlayerTextDrawTextSize(playerid, TimerBomb[playerid], 40.000000, 89.687500);
	PlayerTextDrawAlignment(playerid, TimerBomb[playerid], 2);
	PlayerTextDrawColor(playerid, TimerBomb[playerid], -1);
	PlayerTextDrawSetShadow(playerid, TimerBomb[playerid], 0);
	PlayerTextDrawSetOutline(playerid, TimerBomb[playerid], 1);
	PlayerTextDrawBackgroundColor(playerid, TimerBomb[playerid], 51);
	PlayerTextDrawFont(playerid, TimerBomb[playerid], 2);
	PlayerTextDrawSetProportional(playerid, TimerBomb[playerid], 1);
Ко всем диалогам:
PHP:
	    case 7172:
	    {
	        if(response)
	        {
		        switch(listitem)
		        {
		            case 0:
		            {
		                SetPVarInt(playerid, "Tip", 1); // Создаем
		                SPD(playerid,7173,DIALOG_STYLE_LIST,"{FFD300}Тип бомба:","С таймером\nРучная","Выбрать","Назад");
		            }
		            case 1:
		            {
                		new carid = GetNearestVehicle(playerid);
						new Float:cx,Float:cy,Float:cz;
						GetVehiclePos(carid, cx, cy, cz);
						if(PlayerToPoint(3.0, playerid, cx, cy, cz) )
						{
			  				SPD(playerid,7173,DIALOG_STYLE_LIST,"{FFD300}Тип бомба:","С таймером\nРучная","Выбрать","Назад");
					  		SetPVarInt(playerid, "Tip", 2); // Создаем
						}
						else return SCM(playerid, COLOR_GRAD1, "Вы должны стоять около автомобиля!");
		            }
		        }
			}
			return true;
		}
	    case 7173:
	    {
	        if(response)
	        {
		        switch(listitem)
		        {
		            case 0:
		            {
		            	switch(GetPVarInt(playerid, "Tip"))
		                {
			                case 1:
							{
								SPD(playerid,7170,DIALOG_STYLE_INPUT,"{FFD300}Таймер бомбы:","{FFFFFF}Введите таймер до взрыва бомба\nПримечание:\n\t\tВремя должно быть введено в минутах.","Ок","Назад");
							}
							case 2:
							{
								SPD(playerid,7170,DIALOG_STYLE_INPUT,"{FFD300}Таймер бомбы:","{FFFFFF}Введите таймер до взрыва бомба\nПримечание:\n\t\tВремя должно быть введено в минутах.","Ок","Назад");
							}
						}
		           	}
		            case 1:
		            {
		                switch(GetPVarInt(playerid, "Tip"))
		                {
		                    case 1:
		                    {
						  		new Float:x, Float:y, Float:z;
								GetPlayerPos(playerid,x,y,z);
								BombPosP[playerid][0] = x;
								BombPosP[playerid][1] = y;
								BombPosP[playerid][2] = z;
		 	    				new objectid = CreateObject(1654,BombPosP[playerid][0]+1,BombPosP[playerid][1],BombPosP[playerid][2],-90.0,90.0,0.0);
		 	    				SetPVarInt(playerid,"polobj",objectid);
								SCM(playerid, 0x00D900C8, "Подсказка: {FFFFFF}Вы можете обезвредить бомбу командой /obezv или взорвать /bum!");
							}
							case 2:
							{
								new carid = GetNearestVehicle(playerid);
								new Float:cx,Float:cy,Float:cz;
								GetVehiclePos(carid, cx, cy, cz);
		 	    				new objectid = CreateDynamicObject(1654, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
								SetPVarInt(playerid,"carobj",objectid);
						 		AttachDynamicObjectToVehicle(objectid, carid, 0.56490, 1.64410, -0.51430,   90.00000, 90.00000, 90.00000);
								SCM(playerid, 0x00D900C8, "Бомба поставлена под машину!");
								SCM(playerid, 0x00D900C8, "Подсказка: {FFFFFF}Вы можете обезвредить бомбу командой /obezv или взорвать /bum!");
								SetPVarInt(playerid, "Carb", 1); // Создаем
								CarBomb[playerid] = carid;

							}
						}
						SetPVarInt(playerid, "BUM", 1); // Создаем
						TextDrawHideForPlayer(playerid, TDBomba);
						DeletePVar(playerid, "Bomba"); //Удаляем
						SetPVarInt(playerid, "Bomba1", 1); // Создаем
						DeletePVar(playerid, "Tip"); //Удаляем
						ApplyAnimation(playerid,"BOMBER","BOM_Plant",1.0,1,0,0,0,3000,0);
						return true;
		            }
		        }
			}
			return true;
	    }
	case 7170:
		{
			if(!response) return true;
			if(sscanf(inputtext, "d",params[0])) return SPD(playerid,7170,DIALOG_STYLE_INPUT,"{FFD300}Таймер бомбы:","{FFFFFF}Введите таймер до взрыва бомба\nПримечание:\n\t\tВремя должно быть введено в минутах.","Ок","Назад");
			if(params[0] < 1 || params[0] > 6) return SCM(playerid, 0x00D900C8, "Подсказка: {FFFFFF}Допустимые значения: 1 - 5 минут");
			new putsec;
			switch(params[0])
			{
				case 1: putsec = 60;
				case 2: putsec = 120;
				case 3: putsec = 180;
				case 4: putsec = 240;
				case 5: putsec = 300;
				case 6: putsec = 10;
			}
			TimeBomb[playerid] = putsec;
			switch(GetPVarInt(playerid, "Tip"))
      		{
				case 1:
				{
			  		new Float:x, Float:y, Float:z;
					GetPlayerPos(playerid,x,y,z);
					BombPosP[playerid][0] = x;
					BombPosP[playerid][1] = y;
					BombPosP[playerid][2] = z;
					new objectid = CreateObject(1654,BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2]-1,-90.0,90.0,0.0);
					SetPVarInt(playerid,"polobj",objectid);
					SCM(playerid, 0x00D900C8, "Подсказка: {FFFFFF}Вы можете обезвредить бомбу командой /obezv");
				}
				case 2:
				{
			  	    new carid = GetNearestVehicle(playerid);
			 		new objectid = CreateDynamicObject(1654, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
			 		SetPVarInt(playerid,"carobj",objectid);
			 		AttachDynamicObjectToVehicle(objectid, carid, 0.56490, 1.64410, -0.51430,   90.00000, 90.00000, 90.00000);
					SCM(playerid, 0x00D900C8, "Бомба поставлена под машину!");
					SCM(playerid, 0x00D900C8, "Подсказка: {FFFFFF}Вы можете обезвредить бомбу командой /obezv!");
					SetPVarInt(playerid, "Carb", 1); // Создаем
					CarBomb[playerid] = carid;
				}
			}
			TextDrawHideForPlayer(playerid, TDBomba);
			ApplyAnimation(playerid,"BOMBER","BOM_Plant",1.0,1,0,0,0,3000,0);
			DeletePVar(playerid, "Bomba"); //Удаляем
			SetPVarInt(playerid, "Bomba1", 1); // Создаем
			BTimer[playerid] = SetTimerEx("TimerBomba", 1000, true, "d", playerid);
			TimerBomba(playerid);
			format(stringer,sizeof(stringer),"%s",TimeConverter(TimeBomb[playerid]));
			PlayerTextDrawSetString(playerid, TimerBomb[playerid], stringer);
			for(new x; x < 2; x++) TextDrawShowForPlayer(playerid, Bomb[x]);
			PlayerTextDrawShow(playerid, TimerBomb[playerid]);
			DeletePVar(playerid, "Tip"); //Удаляем
			return true;
		}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP:
	if(newkeys & KEY_SPRINT && newkeys & KEY_JUMP)
	{
		if(!IsPlayerInAnyVehicle(playerid))
		{
		    if(PlayerInfo[playerid][pMRInections] != 8) return true;
			if(PlayerInfo[playerid][pRKInections] < 2) return true;
   		    if(GetPVarInt(playerid, "Bomba1") == 0) return true;
		    cmd::bum(playerid, "");
		    RemovePlayerAttachedObject(playerid,1);
		}
	}
Ко всем командам
PHP:
c:obezv; // обезвредить
{
    if(PlayerInfo[playerid][pMRInections] != 8) return SCM(playerid,COLOR_WHITE, "Вам не доступна эта функция");
    if(GetPVarInt(playerid, "Bomba1") == 0) return SCM(playerid, COLOR_GRAD1, "Вы не вставляли бомбу");
    if(PlayerToPoint(3.0, playerid, BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2]) )
	{
 		for(new x; x < 2; x++) TextDrawHideForPlayer(playerid, Bomb[x]);
		PlayerTextDrawHide(playerid, TimerBomb[playerid]);
		KillTimer(BTimer[playerid]);
	    new objectid = GetPVarInt(playerid,"polobj");
	    DeletePVar(playerid,"polobj");
	    DestroyDynamicObject(objectid);
		new objectid1 = GetPVarInt(playerid,"carobj");
		DeletePVar(playerid,"polobj");
		DestroyDynamicObject(objectid1);
		DeletePVar(playerid, "Carb"); //Удаляем
		DeletePVar(playerid, "Bomba1"); //Удаляем
		ApplyAnimation(playerid,"BOMBER","BOM_Plant",1.0,1,0,0,0,3000,0);
	}
	else return SCM(playerid, COLOR_GRAD1, "Вы должны находиться в радиусе 3 метров от бомбы!");
	return true;
}
c:bum; // Взорвать
{
	if(PlayerInfo[playerid][pMRInections] != 8) return SCM(playerid,COLOR_WHITE, "Вам не доступна эта функция");
	if(PlayerInfo[playerid][pRKInections] < 2) return SCM(playerid, COLOR_GRAD1, "Вам нужен 2 ранг");
    if(GetPVarInt(playerid, "Bomba1") == 0) return SCM(playerid, COLOR_GRAD1, "Вы не вставляли бомбу");
    if(GetPVarInt(playerid, "BUM") == 0) return true;
	if(GetPVarInt(playerid, "Carb") == 1)
	{
	    new Float:x, Float:y, Float:z;
	    GetVehiclePos(CarBomb[playerid], x,y,z);
	    if(PlayerToPoint(200.0, playerid, x,y,z) )
		{
			Bum(x,y,z);
			new objectid = GetPVarInt(playerid,"carobj");
			DeletePVar(playerid,"polobj");
			DestroyDynamicObject(objectid);
		    DeletePVar(playerid, "Bomba1"); //Удаляем
		    DeletePVar(playerid, "Carb"); //Удаляем
		    DeletePVar(playerid, "BUM"); //Удаляем
		}
		else return SCM(playerid, COLOR_GRAD1, "Вы должны находиться в радиусе 200 метров от бомбы!");
	}
	else
	{
	    if(PlayerToPoint(100.0, playerid, BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2]) )
		{
			CreateExplosion(BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2],6, 100.0);
			CreateExplosion(BombPosP[playerid][0]+1,BombPosP[playerid][1]+1,BombPosP[playerid][2],1, 100.0);
			CreateExplosion(BombPosP[playerid][0]-1,BombPosP[playerid][1]-1,BombPosP[playerid][2],1, 100.0);
			CreateExplosion(BombPosP[playerid][0]-1,BombPosP[playerid][1]+1,BombPosP[playerid][2],1, 100.0);
			CreateExplosion(BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2]+1,1, 100.0);
			CreateExplosion(BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2]+2,1, 100.0);
		    new objectid = GetPVarInt(playerid,"polobj");
  		    DeletePVar(playerid,"polobj");
  		    DestroyDynamicObject(objectid);
			DeletePVar(playerid, "Bomba1"); //Удаляем
			new objectid1 = GetPVarInt(playerid,"carobj");
			DeletePVar(playerid,"polobj");
			DestroyDynamicObject(objectid1);
			DeletePVar(playerid, "BUM"); //Удаляем
		}
		else return SCM(playerid, COLOR_GRAD1, "Вы должны находиться в радиусе 100 метров от бомбы!");
	}
	return true;
}
CMD:bomba(playerid) //Меню
{
	if(PlayerInfo[playerid][pMRInections] != 8) return SCM(playerid,COLOR_WHITE, "Вам не доступна эта функция");
	if(PlayerInfo[playerid][pRKInections] < 2) return SCM(playerid, COLOR_GRAD1, "Вам нужен 2 ранг");
	if(GetPVarInt(playerid, "Bomba") == 0) return SCM(playerid, COLOR_GRAD1, "У вас нету бомбы");
	if(GetPVarInt(playerid, "Bomba1") == 1) return SCM(playerid, COLOR_GRAD1, "Вы уже поставили бомбу");
	SPD(playerid,7172,DIALOG_STYLE_LIST,"{FFD300}Бомба:","На пол\nПод машину","Выбрать","Назад");
	return true;
}
CMD:getbomb(playerid)//Взять бомбу
{
    if(GetPVarInt(playerid, "Bomba") == 1) return SCM(playerid, COLOR_GREEN,"У Вас уже есть бомба!");//Любимый цвет
    SetPVarInt(playerid, "Bomba", 1); // Создаем
	SetPlayerHealthAC(playerid, 100);
	SetPlayerArmourAC(playerid, 100);
	SCM(playerid, COLOR_GREEN,"Вы взяли бомбу что бы использовать её введите /bomba");//Любимый цвет
	TextDrawShowForPlayer(playerid, TDBomba);
	return true;
}
Ко всем ТекстДравам:
PHP:
	TDBomba = TextDrawCreate(343.500000, 406.875000, "LD_SPAC:white");
	TextDrawLetterSize(TDBomba, -0.013000, -0.788749);
	TextDrawTextSize(TDBomba, -29.500000, 32.375000);
	TextDrawAlignment(TDBomba, 1);
	TextDrawColor(TDBomba, -1);
	TextDrawUseBox(TDBomba, true);
	TextDrawBoxColor(TDBomba, 0);
	TextDrawSetShadow(TDBomba, 0);
	TextDrawSetOutline(TDBomba, 0);
	TextDrawBackgroundColor(TDBomba, -192);
	TextDrawFont(TDBomba, 5);
	TextDrawSetPreviewModel(TDBomba, 1654);
	TextDrawSetPreviewRot(TDBomba, 0.000000, 0.000000, 180.000000, 1.000000);
 //
	Bomb[0] = TextDrawCreate(559.500000, 248.937500, TextToRussia("Время"));
	TextDrawLetterSize(Bomb[0], 0.549000, 1.026875);
	TextDrawTextSize(Bomb[0], 4.000000, 140.000000);
	TextDrawAlignment(Bomb[0], 2);
	TextDrawColor(Bomb[0], -1);
	TextDrawUseBox(Bomb[0], true);
	TextDrawBoxColor(Bomb[0], -16776961);
	TextDrawSetShadow(Bomb[0], 0);
	TextDrawSetOutline(Bomb[0], 1);
	TextDrawBackgroundColor(Bomb[0], 51);
	TextDrawFont(Bomb[0], 2);
	TextDrawSetProportional(Bomb[0], 1);

	Bomb[1] = TextDrawCreate(633.500000, 261.375000, "usebox");
	TextDrawLetterSize(Bomb[1], 0.000000, 1.773611);
	TextDrawTextSize(Bomb[1], 485.500000, 0.000000);
	TextDrawAlignment(Bomb[1], 1);
	TextDrawColor(Bomb[1], 0);
	TextDrawUseBox(Bomb[1], true);
	TextDrawBoxColor(Bomb[1], 102);
	TextDrawSetShadow(Bomb[1], 0);
	TextDrawSetOutline(Bomb[1], 0);
	TextDrawFont(Bomb[1], 0);
Где-то в конце мода:
PHP:
publics: TimerBomba(playerid)
{
    if(TimeBomb[playerid] > 0)TimeBomb[playerid] -= 1;
    if(TimeBomb[playerid] <= 0)
	{
	    if(GetPVarInt(playerid, "Carb") == 0)
   		{
		    CreateExplosion(BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2],6, 100.0);
		    CreateExplosion(BombPosP[playerid][0]+1,BombPosP[playerid][1]+1,BombPosP[playerid][2],1, 100.0);
		    CreateExplosion(BombPosP[playerid][0]-1,BombPosP[playerid][1]-1,BombPosP[playerid][2],1, 100.0);
		    CreateExplosion(BombPosP[playerid][0]-1,BombPosP[playerid][1]+1,BombPosP[playerid][2],1, 100.0);
		    CreateExplosion(BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2]+1,1, 100.0);
		    CreateExplosion(BombPosP[playerid][0],BombPosP[playerid][1],BombPosP[playerid][2]+2,1, 100.0);
		    for(new x; x < 2; x++) TextDrawHideForPlayer(playerid, Bomb[x]);
			PlayerTextDrawHide(playerid, TimerBomb[playerid]);
			KillTimer(BTimer[playerid]);
   			new objectid = GetPVarInt(playerid,"polobj");
			DeletePVar(playerid,"polobj");
			DestroyDynamicObject(objectid);
			DeletePVar(playerid, "Bomba1"); //Удаляем
			TimeBomb[playerid] = 0;
		}
		else
		{
   			new Float:x, Float:y, Float:z;
	   	    GetVehiclePos(CarBomb[playerid], x,y,z);
			Bum(x,y,z);
 			new objectid = GetPVarInt(playerid,"carobj");
			DeletePVar(playerid,"polobj");
			DestroyDynamicObject(objectid);
		    DeletePVar(playerid, "Bomba1"); //Удаляем
		    DeletePVar(playerid, "Carb"); //Удаляе
		}
	}
	else
	{
	    format(stringer,sizeof(stringer),"%s",TimeConverter(TimeBomb[playerid]));
		PlayerTextDrawSetString(playerid, TimerBomb[playerid], stringer);
	}
}
stock TextToRussia(string[])
{
    new result[128];
    for (new i = 0; i < sizeof(result); i++)
    {
        switch (string[i])
        {
        case 'а': result[i] = 'A';
        case 'А': result[i] = 'A';
        case 'б': result[i] = '—';
		case 'Б': result[i] = 'Ђ';
        case 'в': result[i] = '‹';
        case 'В': result[i] = 'B';
        case 'г': result[i] = '‚';
        case 'Г': result[i] = '‚';
        case 'д': result[i] = 'ѓ';
        case 'Д': result[i] = 'ѓ';
        case 'е': result[i] = 'E';
        case 'Е': result[i] = 'E';
        case 'ё': result[i] = 'E';
        case 'Ё': result[i] = 'E';
        case 'ж': result[i] = '„';
        case 'Ж': result[i] = '„';
        case 'з': result[i] = '€';
        case 'З': result[i] = '€';
        case 'и': result[i] = '…';
        case 'И': result[i] = '…';
        case 'й': result[i] = '…';
        case 'Й': result[i] = '…';
        case 'к': result[i] = 'K';
        case 'К': result[i] = 'K';
        case 'л': result[i] = '‡';
        case 'Л': result[i] = '‡';
        case 'м': result[i] = 'M';
        case 'М': result[i] = 'M';
        case 'н': result[i] = 'H';
        case 'Н': result[i] = 'H';
        case 'о': result[i] = 'O';
        case 'О': result[i] = 'O';
        case 'п': result[i] = 'Њ';
        case 'П': result[i] = 'Њ';
        case 'р': result[i] = 'P';
        case 'Р': result[i] = 'P';
        case 'с': result[i] = 'C';
        case 'С': result[i] = 'C';
        case 'т': result[i] = 'Џ';
        case 'Т': result[i] = 'Џ';
        case 'у': result[i] = 'Y';
        case 'У': result[i] = 'Y';
        case 'ф': result[i] = 'Ѓ';
        case 'Ф': result[i] = 'Ѓ';
        case 'х': result[i] = 'X';
        case 'Х': result[i] = 'X';
        case 'ц': result[i] = '‰';
        case 'Ц': result[i] = '‰';
        case 'ч': result[i] = 'Ќ';
        case 'Ч': result[i] = 'Ќ';
        case 'ш': result[i] = 'Ћ';
        case 'Ш': result[i] = 'Ћ';
        case 'щ': result[i] = 'Љ';
        case 'Щ': result[i] = 'Љ';
        case 'ь': result[i] = '’';
        case 'Ь': result[i] = '’';
        case 'ъ': result[i] = '§';
        case 'Ъ': result[i] = '§';
        case 'ы': result[i] = '‘';
        case 'Ы': result[i] = '‘';
        case 'э': result[i] = '“';
        case 'Э': result[i] = '“';
        case 'ю': result[i] = '”';
        case 'Ю': result[i] = '”';
        case 'я': result[i] = '•';
        case 'Я': result[i] = '•';
        default: result[i] = string[i];
        }
    }
    return result;
}
stock TimeConverter(seconds)
{
	new minutes = floatround(seconds/60);
	seconds -= minutes*60;
	format(stringer1, 64, "%02d:%02d", minutes, seconds);
	return stringer1;
}
​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу