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

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

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

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

Привязка команды к другой команде с использованием таймера

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

Nike_

Умник
Делал для rls
Объясню на примерах
Допустим кто то из банды хочет взять маты со склада
А чтобы их взять лидер должен разрешить брать маты со склада
Он вводит например команду /matsdost и всем разрешается брать маты
Потом он вводит /matsundost и доступ к складу закрывается.

Или во втором варианте будет использоваться таймер
Лидер вводит /matsdost и склад открыт ну например на 1 минуту
Так же эту команду можно сделать и для замов
Для примера я делаю для банд!

и так начнём

Ко всем new
PHP:
new matsdost;
В команду /getmaterials добавим проверку на доступ к складу
PHP:
if(strcmp(cmd,"/getmaterials",true)==0)
     {
      if(matsdost == 1)
       {
         if(!IsATerra (playerid)) return	SendClientMessage(playerid, COLOR_GRAD1, "Вы не на своей базе");
 			if(PlayerInfo[playerid][pMember] == 12 && PlayerInfo[playerid][pRank] >= 3)//Баллас с 3 ранга
			{
			if(ballasmatbi <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			ballasmatbi -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(12, COLOR_YELLOW2, string);
			return 1;
}
	else if(PlayerInfo[playerid][pMember] == 15 && PlayerInfo[playerid][pRank] >= 3)//grove с 3 ранга
			{
			if(groovmatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			groovmatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
	             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(15, COLOR_YELLOW2, string);
				return 1;
}
	else if(PlayerInfo[playerid][pMember] == 13 && PlayerInfo[playerid][pRank] >= 3)//vagos с 3 ранга
			{
			if(vagosmatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			vagosmatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(13, COLOR_YELLOW2, string);
				return 1;
}
else if(PlayerInfo[playerid][pMember] == 17 && PlayerInfo[playerid][pRank] >= 3)//azte с 3 ранга
			{
			if(aztekmatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			aztekmatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(17, COLOR_YELLOW2, string);
				return 1;
}
	else if(PlayerInfo[playerid][pMember] == 18 && PlayerInfo[playerid][pRank] >= 3)//rifa с 3 ранга
   {
			if(rifamatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			rifamatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(18, COLOR_YELLOW2, string);
				return 1;
}
			return 1;
 }
}
Ниже команды /getmaterials добавим команды /matsdost /matsundost
PHP:
if(strcmp(cmd, "/matsdost", true) == 0)
	{
	if(IsAGang(playerid) || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pRank] == 9)
	{
           SendClientMessage(playerid,COLOR_WHITE,"Вы открыли склад");
	matsdost = 1;
	}
	return 1;
	}
	if(strcmp(cmd, "/matsundost", true) == 0)
	{
	if(IsAGang(playerid) || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pRank] == 9)
	{
           SendClientMessage(playerid,COLOR_WHITE,"Вы закрыли склад");
	matsdost = 0;
	}
	return 1;
	}
Так же можно сделать так чтобы банде писалось что склад закрыт
Когда они будут брать маты
Для этого добавьте к команду /getmaterials всем бандам индивидуально
Вот это
PHP:
if(matsdost == 0) { SendClientMessage(playerid, COLOR_GREY, "Склад закрыт"); return 1; }
А проверку if(matsdost == 1) уберите
PHP:
И если будете убирать не забудьте и убрать скобки
if(matsdost == 1)
{
Тут ваша команда
}
Всё теперь чтобы банда могла взять материалы со склада лидер должен им разрешить!

Но есть и второй вариант
Это использование таймера
Лидер даёт доступ брать маты на минуту или сколько душе угодно.

Мы просто добавим ко всем new
PHP:
new matsdostLock;
Изменим команду /matsdost
PHP:
if(strcmp(cmd, "/matsdost", true) == 0)
	{
	if(IsAGang(playerid) || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pRank] == 9)
	{
      SendClientMessage(playerid,COLOR_WHITE,"Вы открыли склад");
	matsdostLock = 1;// Там где 1 это время в минутах
	}
	return 1;
	}
Команду /getmaterials
PHP:
if(strcmp(cmd,"/getmaterials",true)==0)
     {
     if(matsdostLock > 0)
			{
         if(!IsATerra (playerid)) return	SendClientMessage(playerid, COLOR_GRAD1, "Вы не на своей базе");
 			if(PlayerInfo[playerid][pMember] == 12 && PlayerInfo[playerid][pRank] >= 3)//Баллас с 3 ранга
			{
			if(ballasmatbi <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			ballasmatbi -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(12, COLOR_YELLOW2, string);
			return 1;
}
	else if(PlayerInfo[playerid][pMember] == 15 && PlayerInfo[playerid][pRank] >= 3)//grove с 3 ранга
			{
			if(groovmatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			groovmatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
	             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(15, COLOR_YELLOW2, string);
				return 1;
}
	else if(PlayerInfo[playerid][pMember] == 13 && PlayerInfo[playerid][pRank] >= 3)//vagos с 3 ранга
			{
			if(vagosmatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			vagosmatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(13, COLOR_YELLOW2, string);
				return 1;
}
else if(PlayerInfo[playerid][pMember] == 17 && PlayerInfo[playerid][pRank] >= 3)//azte с 3 ранга
			{
			if(aztekmatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			aztekmatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(17, COLOR_YELLOW2, string);
				return 1;
}
	else if(PlayerInfo[playerid][pMember] == 18 && PlayerInfo[playerid][pRank] >= 3)//rifa с 3 ранга
   {
			if(rifamatbi  <= 0) { SendClientMessage(playerid, COLOR_GREY, "На складе нет материалов"); return 1; }
			if(PlayerInfo[playerid][pMats] > 1000) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя взять больше");
			rifamatbi  -= 500;
			PlayerInfo[playerid][pMats] += 500;
   			format(string, sizeof(string), "Вы взяли 500 матов со склада банды");
			SendClientMessage(playerid, 0x6495EDFF, string);
             GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s взял со склада банды 500 материалов", sendername);
			SendFamilyMessage(18, COLOR_YELLOW2, string);
				return 1;
}
			return 1;
}
}
И команду /matsundost
PHP:
if(strcmp(cmd, "/matsundost", true) == 0) 
    { 
    if(IsAGang(playerid) || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pRank] == 9) 
    { 
           SendClientMessage(playerid,COLOR_WHITE,"Вы закрыли склад"); 
    matsdostLock = 0; 
    } 
    return 1; 
    }
Затем в конец мода
PHP:
forward matsdostUnlock();
public matsdostUnlock()
{
 if(matsdostLock > 0) matsdostLock--;
}
В public OnGameModeInit()
PHP:
SetTimer("matsdostUnlock", 60000, 1);
Всё теперь благодаря таймеру маты можно брать со слада только 1 минуту
после того как лидер или зам дали доступ командой /matsdost
Примечание: Систему таймера я взял не помню уже из какой темы тут на pawno-info
Автор: команд и самого урока я

Так же вы можете ставить такие проверки и на другие команды
Удачи вам в творчестве.
:dt::dt::dt::dt::dt::dt::dt::dt::dt::dt:
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу