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

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

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

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

Мануал Взрывчатка на заложника [ALL]

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

Ashley100

Умник
Доброго времени суток всем. Этот мануал подойдет для RP модов, для DM думаю тоже).


Описание:
Эта система позволяет нацеплять взрывчатку на заложника(кого угодно), и установить таймер. Спустя некоторое время заложенная на игрока взрывчатка взрывается. Так же её можно и разминировать, находясь по близости от игрока(заложника)


/nab idНадевает объекты взрывчатки на жертву
/aktivАктивирует взрывчатку
/razminРазминирует взрывчатку(нужно быть в 2 метрах от заложника)



Начнём с переменных
PHP:
new bomdtimer;// К этой переменной пресваеваится таймер
new bomdplayer;// это будет игрок на которого нацепили взрывчатку
Команды

PHP:
if(strcmp(cmd, "/nab", true) == 0)
    {
        new nabid;
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте /nab [id игрока]");
        //if(nabid == PlayerInfo[playerid][pMember]) return SendClientMessage(playerid, COLOR_GRAD2,"C4 нельзя установить на своих!");
        if(GetPVarInt(playerid,"c4") != 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже установлена, используйте /aktiv что бы активировать её");//Проверим может бомба уже стоит и её надо рвануть
        nabid = ReturnUser(tmp);// id player
        bomdplayer = nabid;
        SetPlayerAttachedObject(nabid,2 , 19142, 1,0.08,0.04,0.00,0.0,0.0,-7.4);// bronea
        SetPlayerAttachedObject(nabid, 3, 1654, 1, 0.60 -0.5, -0.20);// z ^ //Прикрепить черепаху к спине игрока на 3 слот
        SetPVarInt(playerid,"c4", 1);
    }
if(strcmp(cmd, "/aktiv", true) == 0)
    {
        if(GetPVarInt(playerid,"c4") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установлена");
        if(GetPVarInt(playerid,"bomdofon") == 1)return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже активирована");
        bomdtimer = SetTimer("OtchetBomb", 5000, true);// сейчас стоит 5 сек. Вы поставьте своё время.
        SetPVarInt(playerid,"c4", 0);
        format(string, sizeof(string), "{ff3300}Таймер запущен. До взрыва 4 минуты!");
        StatusMessage(bomdplayer, string, string);
        SetPVarInt(playerid,"bomdofon", 1);//bomdofon = 1;
    }
if (strcmp(cmd, "/razmin", true)==0)
    {
        if(GetDistanceBetweenPlayers(playerid, bomdplayer) > 2 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(bomdplayer)) return SendClientMessage(playerid, COLOR_GRAD1, "[{FF0000}Error{B4B5B7}] Игрок слишком далеко от Вас.");
        if(GetPVarInt(playerid,"bomdofon") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установлено");
        SetPVarInt(playerid,"c4", 0);
        SetPVarInt(playerid,"bomdofon", 0);//bomdofon = 0;
        SetPVarInt(playerid,"bomdtime", 0);//bomdtime = 0;
        KillTimer(bomdtimer);
        RemovePlayerAttachedObject(bomdplayer,3);// снимаем бомбу
        RemovePlayerAttachedObject(bomdplayer,2);// снимаем broniu
        format(string, sizeof(string), "{ff3300}Бомба разминирована!");
        StatusMessage(bomdplayer, string, string);
    }

Команды на YCMD

PHP:
YCMD:nab(playerid,params[], help)
{
	if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте /nab [id игрока]");
	if(GetPVarInt(playerid,"c4") != 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже установлена, используйте /aktiv что бы активировать её");//Проверим может бомба уже стоит и её надо рвануть
	bomdplayer = params[0];// id player
	SetPlayerAttachedObject(bomdplayer,2 , 19142, 1,0.08,0.04,0.00,0.0,0.0,-7.4);// bronea
	SetPlayerAttachedObject(bomdplayer, 3, 1654, 1, 0.60 -0.5, -0.20);// z ^ //Прикрепить черепаху к спине игрока на 3 слот
	SetPVarInt(playerid,"c4", 1);
    return 1;
}
YCMD:aktiv(playerid,params[], help)
{
	if(GetPVarInt(playerid,"c4") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установлена");
	if(GetPVarInt(playerid,"bomdofon") == 1)return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже активированна");//if(bomdofon == 1)
 	bomdtimer = SetTimer("OtchetBomb", 5000, true);
	SetPVarInt(playerid,"c4", 0);
	format(string, sizeof(string), "{ff3300}Таймер запущен. До взрыва 4 минуты!");
	StatusMessage(bomdplayer, string, string);
	SetPVarInt(playerid,"bomdofon", 1);//bomdofon = 1;
    return 1;
}
YCMD:razmin(playerid,params[], help)
{
	if(GetDistanceBetweenPlayers(playerid, bomdplayer) > 2 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(bomdplayer)) return SendClientMessage(playerid, COLOR_GRAD1, "[{FF0000}Error{B4B5B7}] Игрок слишком далеко от Вас.");
 	if(GetPVarInt(playerid,"bomdofon") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установленно");
	SetPVarInt(playerid,"c4", 0);
	SetPVarInt(playerid,"bomdofon", 0);//bomdofon = 0;
	SetPVarInt(playerid,"bomdtime", 0);//bomdtime = 0;
	KillTimer(bomdtimer);
	RemovePlayerAttachedObject(bomdplayer,3);// снимаем бомбу
	RemovePlayerAttachedObject(bomdplayer,2);// снимаем broniu
	format(string, sizeof(string), "{ff3300}Бомба разменированна!");
	StatusMessage(bomdplayer, string, string);
    return 1;
}

stock StatusMessage(playerid, str[], textbuble[])
PHP:
stock StatusMessage(playerid, str[], textbuble[])
{
	new Float:Posw[3];
	GetPlayerPos(playerid,Posw[0],Posw[1],Posw[2]);
	for(new i=0;i<MAX_PLAYERS;i++)
	{
		if(!IsPlayerInRangeOfPoint(i,15.0,Posw[0],Posw[1],Posw[2]) || !IsPlayerConnected(i))continue;
		if(GetPlayerInterior(playerid) != GetPlayerInterior(i) || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(i))continue;
		SendClientMessage(i,0xdd90ffAA,str);
		SetPlayerChatBubble(playerid, textbuble, 0xdd90ffFF, 15.0, 3000);
	}
	return true;
}

Паблик в котором происходят действия.
PHP:
forward OtchetBomb(playerid);
public OtchetBomb(playerid)
{
	new string[90];
	new bomdtime;
	bomdtime = GetPVarInt(playerid,"bomdtime");
	SetPVarInt(playerid,"bomdtime", bomdtime += 1);
	
	
    if(GetPVarInt(playerid,"c4") == 0)
    {
        if(GetPVarInt(playerid,"bomdtime") >= 4)// если  bomdtime больше 4 то происходит взрыв.
		{
			KillTimer(bomdtimer);
	        new Float:x,Float:y,Float:z;
	    	GetPlayerPos(bomdplayer,x,y,z); //узнаём все 3 переменные координат


	    	CreateExplosion(x, y, z,5,50.0);
	        CreateExplosion(x, y, z,5,50.0);
	        CreateExplosion(x, y, z,10,50.0);
	        CreateExplosion(x, y, z,10,50.0);
	        CreateExplosion(x, y, z,10,50.0);
	        CreateExplosion(x, y, z,5,50.0);

			RemovePlayerAttachedObject(bomdplayer,3);// снимаем бомбу
			RemovePlayerAttachedObject(bomdplayer,2);// снимаем broniu

			DestroyObject(GetPVarInt(playerid, "c4"));//удаляем обьект бомбы
	        format(string, sizeof(string), "C4 взорвалась в радиусе 20 метров!");
			StatusMessage(bomdplayer, string, string);

			SetPVarInt(playerid,"c4", 0);
			SetPVarInt(playerid,"bomdofon", 0 );//bomdofon = 0;
			SetPVarInt(playerid,"bomdtime", 0 );//bomdtime = 0;
			
		}
		else
 		{
	 	    format(string, sizeof(string), "Прошло %d/4 минут с момента активации бомбы.", GetPVarInt(playerid,"bomdtime"));//bomdtime);
			StatusMessage(bomdplayer, string, string);
 		}
	}
	
    return 1;
}

 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу