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

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

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

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

Система медикаментов

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

JimL

Специалист
Всем доброго времени суток.

Описание системы: В госпитале Сан Фиерро, есть общий склад медикаментов. При лечении пациента, или выдачи аптечки, на складе количество медикаментов убавляется. Не далеко от фермы, есть небольшой заводик, по производству этих медикаментов, собственно где работник госпиталя, загружает фургон, и возит медикаменты в госпиталь.
Каждый бандит, может украсть немного медикаментов с госпиталя \ завода, и сварить из них наркотики, на кухне наркопритона.
Собственно это все и описание. :)

Автор мапы: Diego_Malkov
Автор кода: [Jim_L]
Мануал для мода: RLS.

[HR][/HR]

Код:​


И так. Ко всем new, добавим:

PHP:
new medwarehouse = 10000;
10000 - Объем нашего склада медикаментов.

Далее, в public SaveMaterials() добавим:

PHP:
ini_setInteger(iniFile, "medwarehouse",medwarehouse);
Сохранение медикаментов, будет идти в файл с материалами. :)

Теперь, добавим в public LoadMaterials() :

PHP:
ini_getInteger(iniFile,"medwarehouse",medwarehouse);
Склад готов. Теперь, ищем case 5522, и перед return 1; добавим:

PHP:
medwarehouse -= 10;
При лечении пациента, командой /heal, со склада будет отниматься 10% медикаментов.

Так же, в enum Pinfo добавим:

PHP:
pMedicines,
    pHmed,
Теперь, делаем команду, для выдачи персональной аптечки. Для этого, в public OnPlayerCommandText(playerid, cmdtext[]) добавим:

PHP:
if(strcmp(cmd, "/setmed", true) == 0)
	{
	if(PlayerInfo[playerid][pMember] == 4)
 	{
	SPD(playerid,12333,DIALOG_STYLE_INPUT,"  "," {FFFFFF}Введите ID игрока, которому желаете выдать аптечку.","Выдать","Отмена");
	return 1;
	}
 	}
Теперь, в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) добавим:

PHP:
case 12333:
		{
			if(response)
	    	{
		    new string556[255];
		    new pname[MAX_PLAYER_NAME];
		        new idd = strval(inputtext);
		        if(idd == INVALID_PLAYER_ID) return	SendClientMessage(playerid, COLOR_GREY, "‹ Игрок не найден.");
		 	if(!ProxDetectorS(8.0, playerid, idd)) return	SendClientMessage(playerid, COLOR_GREY, "‹ Игрок не рядом с вами.");
	   	        GetPlayerName(idd, pname, sizeof(pname));
	                new sendername[MAX_PLAYER_NAME];
	                GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), " Доктор %s выдал Вам аптечку.", sendername);
			SendClientMessage(idd, 0x6495EDFF, string);
   			SendClientMessage(idd,COLOR_WHITE," (( Чтобы использовать аптечку, Введите /mheal ))");
			PlayerInfo[idd][pHmed] = 2;
			medwarehouse -= 20;
		    format(string556, sizeof(string556), " Вы выдали %s аптечку.",pname,idd);
		    SendClientMessage(playerid, 0x6495EDFF, string556);
		    return 1;
    		}
   			else
			{
		    return 1;
			}
			}
Чтобы использовать аптечку, нужно добавить команду /mheal. Для этого, в public OnPlayerCommandText добавим:

PHP:
if(strcmp(cmd, "/mheal", true) == 0)
	{
	if(PlayerInfo[playerid][pHmed] < 1) return SendClientMessage(playerid,COLOR_GREY," У Вас нет аптечек.");
    if(PlayerInfo[playerid][ pHP ] > 90) return SendClientMessage(playerid,COLOR_GREY," Ваше здоровье в норме.");
 	SendClientMessage(playerid,COLOR_LIGHTGREEN," Вы использовали аптечку. ");
  	PlayerInfo[playerid][pHmed] -= 1;
  	PlayerInfo[playerid][ pHP ] += 45;
       return 1;
	}
Всего, использовать аптечку можно 2 раза. Если доктор Вам еще не выдаст. :)

В этот же public с командами, добавляем:

PHP:
			if(strcmp(cmd, "/wmedicines", true) == 0) 
			{
			if(PlayerInfo[playerid][pMember] == 4)
			{
			format(string, sizeof(string), " Медикаментов на складе: %d/10000 .", medwarehouse);
			SendClientMessage(playerid, 0x6495EDFF, string);
			}
			return 1;
			}
С помощью это команды, мы можем смотреть состояние склада. (Только для работников госпиталя)

Опять, в public с командами, добавим три команды: (Загрузка медикаментов, разгрузка медикаментов, варка наркотиков для банд.)

PHP:
if(strcmp(cmd, "/loadmed", true) == 0)
	{
		if(PlayerInfo[playerid][pMember] == 4)
		{
			if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 609) return    SendClientMessage(playerid,COLOR_GREY," Вы не в фугроне.");
			SendClientMessage(playerid, COLOR_GREEN, " Езжайте на склад. После загрузки отправляйтесь в госпиталь Сан Фиерро.");
			SetPlayerCheckpoint(playerid,-56.1050,-223.1676,5.4297,5);
			PlayerInfo[playerid][pMedicines] = 1000;
			PicCP[playerid] = 0;

		}
		return 1;
	}
else if(strcmp(cmd, "/drugsweld", true) == 0)
	{
	if(PlayerInfo[playerid][pMember] == 12 && PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 13 && PlayerInfo[playerid][pLeader] == 13 || PlayerInfo[playerid][pMember] == 15 && PlayerInfo[playerid][pLeader] == 15 || PlayerInfo[playerid][pMember] == 17 && PlayerInfo[playerid][pLeader] == 17 || PlayerInfo[playerid][pMember] == 18 && PlayerInfo[playerid][pLeader] == 18)
	{
	if(!IsPlayerInRangeOfPoint(playerid,10,333.6759,1124.3232,1083.8903)) return SendClientMessage(playerid, COLOR_GRAD1, " Вы не в наркопритоне.");
	if(PlayerInfo[playerid][pMedicines] < 25) return SendClientMessage(playerid,COLOR_WHITE," У Вас недостаточно медикаментов.");
	{
	ApplyAnimation(playerid,"DEALER","DRUGS_BUY",4.0,1,0,0,1,1,1);
	SendClientMessage(playerid,COLOR_BLUE," Вы сварили 10 грамм наркотиков. (( /usedrugs ))");
	PlayerInfo[playerid][pMedicines] -= 25;
	PlayerInfo[playerid][pDrugs] += 10;
	}
	}
	}
if(strcmp(cmd,"/munload",true)==0)
     {
   	   	    	if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 609) return   SendClientMessage(playerid,COLOR_GREY," Вы не в фургоне.");
     	     	if(PlayerInfo[playerid][pMember] == 4)
    	     	{
			 	if(PlayerInfo[playerid][pMedicines] <= 0) return SendClientMessage(playerid,COLOR_GREY," Не достаточно медикаментов для разгрузки.");
				if(medwarehouse >= 10000) return SendClientMessage(playerid,COLOR_GREY," Склад заполнен.");
				if(PlayerToPoint(6.0,playerid,-2685.3289,636.1305,14.4531))
			 	{
				medwarehouse += PlayerInfo[playerid][pMedicines];
   				PlayerInfo[playerid][pMedicines] = 0;
		    	format(string, sizeof(string), " Медикаменты разгружены, в фургоне %d/1000", PlayerInfo[playerid][pMedicines]);
				SendClientMessage(playerid, TEAM_GROVE_COLOR, string);
				format(string, sizeof(string), " Всего медикаментов на складе: %d/10000", medwarehouse);
				SendClientMessage(playerid, COLOR_GREEN, string);
				SaveMaterials();
			 	return 1;
			 	}
			 	}
			 	}
При варке наркотиков, с первого раза может не сработать анимация.

Теперь, делаем кражу медикаментов для банд. Для этого, в public OnPlayerPickUpPickup(playerid, pickupid) добавим:

PHP:
else if(pickupid >= gmedicines[0] && pickupid <= gmedicines[1])
  		{
  		if (!IsAGang(playerid)) return  SendClientMessage(playerid,COLOR_GREY," Вы не бандит.");
		if(medwarehouse <= 0) return SendClientMessage(playerid,COLOR_GRAD1," На складе нет медикаментов.");
   		if(PlayerInfo[playerid][pMedicines] > 20) return SendClientMessage(playerid,COLOR_GRAD1," Вы не можете взять еще больше медикаментов.");
     	SendClientMessage(playerid, COLOR_BLUE," Вы украли медикаменты.");
     	SendClientMessage(playerid, COLOR_WHITE," (( Чтобы сварить из них наркотики, Введите /drugsweld на кухне наркопритона. ))");
		medwarehouse -= 20;
		PlayerInfo[playerid][pMedicines] += 20;
        }
Не забудем, ко всем new добавить:

PHP:
new gmedicines[2];
И, в public OnGameModeInit() добавим:

PHP:
gmedicines[0] = CreatePickup(1241,2,-2710.2380,639.2195,14.4531);
gmedicines[1] = CreatePickup(1241,2,-50.2787,-233.3392,6.7646);
В этот же public добавляем 3d текст "Разгрузка медикаментов".

PHP:
Create3DTextLabel(" Разгрузка\n медикаментов",COLOR_GREEN,-2685.3289,636.1305,14.4531,10.0,0,1);
Чуть не забыл, делаем сохранение для аптечек.
В public OnPlayerConnect добавим

PHP:
PlayerInfo[playerid][pHmed] = 0;
В public OnPlayerRegister

PHP:
ini_setInteger(File,"Heals",PlayerInfo[playerid][pHmed]);
в public OnPlayerUpdateRL

PHP:
ini_setInteger(File,"Heals",PlayerInfo[playerid][pHmed]);
в OnPlayerLogin добавим:

PHP:
ini_getInteger(File,"Heals",PlayerInfo[playerid][pHmed]);
[HR][/HR]

Скриншоты:​





Украсть их можно у госпиталя СФ.


Вот и все. :) Будут ошибки, пишите, исправим. Если что, в команде /drugsweld проверку на банды, можете исправить на IsAGang, ну и координаты, если что, можете поменять на свои. :)
Вам нужно будет прикрепить фургоны для перевозки (ID 609), так как перевозка медикаментов осуществляется именно на таком фургоне. :)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу