JimL
Специалист
Всем доброго времени суток.
Описание системы: В госпитале Сан Фиерро, есть общий склад медикаментов. При лечении пациента, или выдачи аптечки, на складе количество медикаментов убавляется. Не далеко от фермы, есть небольшой заводик, по производству этих медикаментов, собственно где работник госпиталя, загружает фургон, и возит медикаменты в госпиталь.
Каждый бандит, может украсть немного медикаментов с госпиталя \ завода, и сварить из них наркотики, на кухне наркопритона.
Собственно это все и описание.
Автор мапы: Diego_Malkov
Автор кода: [Jim_L]
Мануал для мода: RLS.
[HR][/HR]
И так. Ко всем new, добавим:
10000 - Объем нашего склада медикаментов.
Далее, в public SaveMaterials() добавим:
Сохранение медикаментов, будет идти в файл с материалами. 
Теперь, добавим в public LoadMaterials() :
Склад готов. Теперь, ищем case 5522, и перед return 1; добавим:
При лечении пациента, командой /heal, со склада будет отниматься 10% медикаментов.
Так же, в enum Pinfo добавим:
Теперь, делаем команду, для выдачи персональной аптечки. Для этого, в public OnPlayerCommandText(playerid, cmdtext[]) добавим:
Теперь, в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) добавим:
Чтобы использовать аптечку, нужно добавить команду /mheal. Для этого, в public OnPlayerCommandText добавим:
Всего, использовать аптечку можно 2 раза. Если доктор Вам еще не выдаст. 
В этот же public с командами, добавляем:
С помощью это команды, мы можем смотреть состояние склада. (Только для работников госпиталя)
Опять, в public с командами, добавим три команды: (Загрузка медикаментов, разгрузка медикаментов, варка наркотиков для банд.)
При варке наркотиков, с первого раза может не сработать анимация.
Теперь, делаем кражу медикаментов для банд. Для этого, в public OnPlayerPickUpPickup(playerid, pickupid) добавим:
Не забудем, ко всем new добавить:
И, в public OnGameModeInit() добавим:
В этот же public добавляем 3d текст "Разгрузка медикаментов".
Чуть не забыл, делаем сохранение для аптечек.
В public OnPlayerConnect добавим
В public OnPlayerRegister
в public OnPlayerUpdateRL
в OnPlayerLogin добавим:
[HR][/HR]
Украсть их можно у госпиталя СФ.
Вот и все.
Будут ошибки, пишите, исправим. Если что, в команде /drugsweld проверку на банды, можете исправить на IsAGang, ну и координаты, если что, можете поменять на свои. 
Вам нужно будет прикрепить фургоны для перевозки (ID 609), так как перевозка медикаментов осуществляется именно на таком фургоне.
Описание системы: В госпитале Сан Фиерро, есть общий склад медикаментов. При лечении пациента, или выдачи аптечки, на складе количество медикаментов убавляется. Не далеко от фермы, есть небольшой заводик, по производству этих медикаментов, собственно где работник госпиталя, загружает фургон, и возит медикаменты в госпиталь.
Каждый бандит, может украсть немного медикаментов с госпиталя \ завода, и сварить из них наркотики, на кухне наркопритона.
Собственно это все и описание.
Автор мапы: Diego_Malkov
Автор кода: [Jim_L]
Мануал для мода: RLS.
[HR][/HR]
Код:
И так. Ко всем new, добавим:
PHP:
new medwarehouse = 10000;
Далее, в public SaveMaterials() добавим:
PHP:
ini_setInteger(iniFile, "medwarehouse",medwarehouse);
Теперь, добавим в public LoadMaterials() :
PHP:
ini_getInteger(iniFile,"medwarehouse",medwarehouse);
PHP:
medwarehouse -= 10;
Так же, в enum Pinfo добавим:
PHP:
pMedicines,
pHmed,
PHP:
if(strcmp(cmd, "/setmed", true) == 0)
{
if(PlayerInfo[playerid][pMember] == 4)
{
SPD(playerid,12333,DIALOG_STYLE_INPUT," "," {FFFFFF}Введите ID игрока, которому желаете выдать аптечку.","Выдать","Отмена");
return 1;
}
}
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;
}
}
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;
}
В этот же 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;
}
PHP:
new gmedicines[2];
PHP:
gmedicines[0] = CreatePickup(1241,2,-2710.2380,639.2195,14.4531);
gmedicines[1] = CreatePickup(1241,2,-50.2787,-233.3392,6.7646);
PHP:
Create3DTextLabel(" Разгрузка\n медикаментов",COLOR_GREEN,-2685.3289,636.1305,14.4531,10.0,0,1);
В public OnPlayerConnect добавим
PHP:
PlayerInfo[playerid][pHmed] = 0;
PHP:
ini_setInteger(File,"Heals",PlayerInfo[playerid][pHmed]);
PHP:
ini_setInteger(File,"Heals",PlayerInfo[playerid][pHmed]);
PHP:
ini_getInteger(File,"Heals",PlayerInfo[playerid][pHmed]);
Скриншоты:
Украсть их можно у госпиталя СФ.
Вот и все.
Вам нужно будет прикрепить фургоны для перевозки (ID 609), так как перевозка медикаментов осуществляется именно на таком фургоне.
Последнее редактирование:
