Grime228
Умник
Всем привет...
Сейчас покажу как сделать работу для фракции Колхоз , у вас уже должна быть фракция Колхоз
Что это даст: Игрок состоящий в Колхозе сможет косить мак , а именно катаясь на комбайне по полю
Установка: (Примечание на инклуде mxINI) Очень легкая!
И так начнем:
В начало мода добавьте переменные , а так же форварды
Теперь в public ongamemodeinit добавьте переменную
И теперь чтобы загружало кол-тво мака добавьте строку туда же в public ongamemodeinit , о самой строке позже
Теперь давайте создадим 3д тексты , и пикап добавьте тоже в public ongamemodeinit
Теперь в public onplayercommandtext добавим команды , так же добавим переменные , если нет
Кстати есл у вас нет паблика PlayerToKvadrat то добавьте , он нам нужен для проверки на зону
Куда нибудь в конец мода
Теперь давайте добавим само кошение
В public SetPlayerUnJail
Теперь нам нужно чтобы если в притоне не было мака то нарко дилер не мог продать нарко , тогда найдите команду /get
И найдите там такие строки
После этих строк добавьте проверку
Далее в этой же команде найди следующие строки
И после GivePlayerMoney(playerid, -price); добавьте следующие строчки ...
Только перед этим удалите строчку PlayerInfo[playerid][pDrugs] = ammount;
Теперь сделаем сохранение и загрузку
Куда нибудь в конец мода добавьте 2 паблика , ниже расписано о них
И кстати создайте сам файл Mac.ini с которого и будет происходить запись и сохранение мака и поместите его в папку scriptfiles в вашем моде!
Вот и все!
P.S. Не забудьте сменить иды фракций на свои , а также иды машин на которых можно производить продажу и закупку мака.
Для тех кто не понял как все происходит то распишу с 0 , сначала садимся в комбайн и едем на поле , далее мы косим мак , после того как мы собрали мак мы отвозим его на склад , его нужно сдать , после сдачи , садимся в легковую машинку берем определенное кол-тво мака на складе , и едем в притон , и там продаем его по цене в 2 раза больше , вот и все , я думаю все знают где находится респа Колхоза !
Автор: Mr.Brooks
Перевод: Grime228
Сейчас покажу как сделать работу для фракции Колхоз , у вас уже должна быть фракция Колхоз
Что это даст: Игрок состоящий в Колхозе сможет косить мак , а именно катаясь на комбайне по полю
Установка: (Примечание на инклуде mxINI) Очень легкая!
И так начнем:
В начало мода добавьте переменные , а так же форварды
PHP:
new bool: MacYest[MAX_VEHICLES],KolxozMac,PritonMac,
Text3D: Mac3dText,Text3D: Mac3dTextPriton;//Кол-тво мака на складе и в притоне и 3д тексты в колхозе и притоне
PHP:
new strg[100];
PHP:
LoadMac();//Загружаем мак из файла
PHP:
format(strg,sizeof(strg),"Склад Мака\nНа складе: %d/20000 грамм",KolxozMac);//Создаем 3д текст чтобы показывало кол-тво мака на складе, и чтобы обновлял но это позже
Mac3dText = Create3DTextLabel(strg,0xFFA500FF,-1061.5,-1183.5,129.2,40.0,0);
format(strg,sizeof(strg),"Притон\nВ притоне: %d/10000 грамм",PritonMac); //Создаем 3д текст чтобы показывало кол-тво мака в притоне, и чтобы обновлял но это позже
Mac3dTextPriton = Create3DTextLabel
PHP:
new string[150],caridi = GetPlayerVehicleID(playerid);
if(strcmp(cmd, "/sellmac", true) == 0)
{
if(PlayerInfo[playerid][pMember] != 22 ||PlayerInfo[playerid][pLeader] != 22) return SendClientMessage(playerid,COLOR_RED,"* Вы не Колхозник");//Проверяем игрока на фракцию
if(!IsPlayerInRangeOfPoint(playerid,10.0,-1061.5,-1183.5,129.2)) return SendClientMessage(playerid,COLOR_RED,"* Вы не в месте продажи наркотиков (Склад/Притон).");//Проверяем на позицию
if(GetVehicleModel(caridi) != 532 || GetVehicleModel(caridi) != 478) return SendClientMessage(playerid,COLOR_RED,"* Вы не в машине Колхоза");//Проверяем сидит ли игрок в данной машине
if(GetPlayerState(playerid) != 2) return SendClientMessage(playerid,COLOR_RED,"* Вы не водитель!");//А так же проверяем сидит ли он за рулем
if(MacYest[caridi] <= 0) return SendClientMessage(playerid,COLOR_RED,"* В вашей машине нету наркотиков!");//Проверяем есть мак в машине , если 0 то иди нах :D
if(KolxozMac >= 20000) return SendClientMessage(playerid,COLOR_RED,"* Склад переполнен! Максимум 20000 грамм.");//Так же делаем лимит на склад , макс мак можно поместить на склад 20 тыс
KolxozMac += MacYest[caridi];
GivePlayerMoney(playerid,MacYest[caridi]*50);
format(string, sizeof(string), "* Вы продали %d грамм складу за %d$",MacYest[caridi],MacYest[caridi]*50);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
DisablePlayerCheckpoint(playerid);
format(string,sizeof(string),"Склад Мака\nНа складе: %d/20000 грамм",KolxozMac);
Update3DTextLabelText(Mac3dText, 0xFFA500FF, string);//Обновляем 3д текст у склада с показом кол-тва мака
MacYest[caridi] = 0;//Все как бэ игрок мак здал , значит в машине мака больше не должно быть так что ставим 0
return SaveMac();//Сохраняем мак в файл
}
else
{
if(!IsPlayerInRangeOfPoint(playerid,10.0,2172.3,-1674.6,15.1)) return SendClientMessage(playerid,COLOR_RED,"* Вы не в месте продажи наркотиков (Склад/Притон).");//Проверяем игрока на координаты у притона , там где можно продать собранный мак
if(GetVehicleModel(caridi) != 478 || GetVehicleModel(caridi) != 554 || GetVehicleModel(caridi) != 547) return SendClientMessage(playerid,COLOR_RED,"* Вы не в машине Колхоза");//Опять же проверяем машины
if(GetPlayerState(playerid) != 2) return SendClientMessage(playerid,COLOR_RED,"* Вы не водитель!");//А так же проверяем сидит ли он за рулем
if(MacYest[caridi] <= 0) return SendClientMessage(playerid,COLOR_RED,"* В вашей машине нету наркотиков!");//Думаю вам понятно
if(PritonMac >= 10000) return SendClientMessage(playerid,COLOR_RED,"* Притон переполнен. Максимум 10000 грамм");//Думаю вам понятно
new money = MacYest[caridi]*100;
PritonMac += MacYest[caridi];
GivePlayerMoney(playerid,money);
format(string, sizeof(string), "* Вы продали %d грамм притону за %d$",MacYest[caridi],money);
SendClientMessage(playerid,COLOR_YELLOW,string);
format(string,sizeof(string),"Склад Мака\nНа складе: %d/20000 грамм",KolxozMac);
Update3DTextLabelText(Mac3dText, 0xFFA500FF, string);
format(string,sizeof(string),"Притон\nВ притоне: %d/10000 грамм",PritonMac);
Update3DTextLabelText(Mac3dTextPriton, 0xFFA500FF, string);
MacYest[caridi] = 0;
return SaveMac();//Думаю вам понятно
}
//------------------------------------------------------------------------------
if(strcmp(cmd, "/buymac", true) == 0)
{
if(PlayerInfo[playerid][pMember] != 22 ||PlayerInfo[playerid][pLeader] != 22) return SendClientMessage(playerid,COLOR_RED,"* Вы не Колхозник");//Проверяем игрока на фракцию
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "* Используйте: /buymac [кол-во максимум 100]");
new mat = strval(tmp);
if(!IsPlayerInRangeOfPoint(playerid,10.0,-1061.5,-1183.5,129.2)) return SendClientMessage(playerid,COLOR_RED,"* Вы не в месте продажи наркотиков (Склад).");//Проверяем игрока на коорды
if(GetVehicleModel(caridi) != 478 || GetVehicleModel(caridi) != 554 || GetVehicleModel(caridi) != 547) return SendClientMessage(playerid,COLOR_RED,"* Вы не в машине Колхоза");//Опять же проверяем машины
if(GetPlayerState(playerid) != 2) return SendClientMessage(playerid,COLOR_RED,"* Вы не водитель!");//А так же проверяем сидит ли он за рулем
if(mat > 100) return SendClientMessage(playerid,COLOR_RED,"* Больше 100 грамм возить нельзя!");//Ставим лимит что больше 100 грам возить нельзя
if(GetPlayerMoney(playerid) < mat*50) return SendClientMessage(playerid,COLOR_RED,"* У Вас нехватает денег!");//Проверка на деньги
if(MacYest[caridi]+mat > 100) return SendClientMessage(playerid,COLOR_LIGHTBLUE,"* За один раз можно везти 100 грамм!");//Опсть же
MacYest[caridi] += mat;
KolxozMac -= mat;
GivePlayerMoney(playerid,-mat*50);
format(string, sizeof(string), "* Вы взяли %d грамм за %d$",mat,mat*50);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
format(string,sizeof(string),"Склад Мака\nНа складе: %d/20000 грамм",KolxozMac);
Update3DTextLabelText(Mac3dText, 0xFFA500FF, string);
return SaveMac();//Думаю понятно
}
//------------------------------------------------------------------------------
if(strcmp(cmd, "/checkmac", true) == 0)
{
if(PlayerInfo[playerid][pLeader] != 22 || PlayerInfo[playerid][pAdmin] < 13)continue;
format(string, sizeof(string), "* На складе %d грамм",KolxozMac);
SendClientMessage(playerid,COLOR_YELLOW,string);
format(string, sizeof(string), "* В притоне %d грамм",PritonMac);
SendClientMessage(playerid,COLOR_YELLOW,string);//Думаю и так понятен смысл команды , и как тут все устроено
return 1;
}
Куда нибудь в конец мода
PHP:
stock PlayerToKvadrat(playerid,Float:min_x,Float:min_y,Float:max_x,Float:max_y)
{
new Float:p[3];
GetPlayerPos(playerid,p[0],p[1],p[2]);
if(p[0] > minx && p[0] < maxx && p[1] > miny && p[1] < maxy) return 1;
return 0;
}
В public SetPlayerUnJail
PHP:
for(new i = 0; i < MAX_PLAYERS; i++)//Создаем цикл для игроков
{
if(!IsPlayerConnected(i)) continue;
if(!PlayerToKvadrat(i,-1199.7,-1065.9,-1002.0,-909.5) && GetVehicleModel(GetPlayerVehicleID(i)) != 532) continue;
if(MacYest[caridd] < 100)//Ставим лимит
{
MacYest[caridd] += 1;//Прибавляем по 1 грамму мака
format(string,sizeof(string),"~y~Mac ~g~%d~y~/100",MacYest[caridd]);
GameTextForPlayer(i, string, 5000, 4);//Создаем геймтекст с показом того сколько игрок собрал мака
}
else
{
GameTextForPlayer(i, "~r~Combine is Full", 5000, 4);//И создаем геймтекст когда машина переполнена
SetPlayerCheckpoint(i,-1061.5,-1183.5,129.2,5);//Так же ставим чекпоинт для иигрока , он показывает место склада , где можно здать мак
}
И найдите там такие строки
PHP:
if(strcmp(x_job,"drugs",true) == 0)
{
if(PlayerInfo[playerid][pDrugs] > 15)
{
format(string, sizeof(string), "* У вас есть при себе нарко %d грамм для начало продайте их!", PlayerInfo[playerid][pDrugs]);
SendClientMessage(playerid, COLOR_GREY, string);
return 1;
}
new tel;
new price;
new ammount;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_ISPOLZUY, "* Используй: /get drugs [кол-тво]");
return 1;
}
new level = PlayerInfo[playerid][pDrugsSkill];
ammount = strval(tmp);
PHP:
if((PritonMac-ammount) < 0)
{
format(string,sizeof(string),"* В притоне не хватает наркотиков, сейчас в притоне %d наркотков",PritonMac);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
PHP:
format(string, sizeof(string), "* Вы купили %d грамм, за $%d.", ammount, price);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
GivePlayerMoney(playerid, -price);
PlayerInfo[playerid][pDrugs] = ammount;
PHP:
format(string,sizeof(string),"Притон\nВ притоне: %d/10000 грамм",PritonMac);
Update3DTextLabelText(Mac3dTextPriton, 0xFFA500FF, string);
PlayerInfo[playerid][pDrugs] = PlayerInfo[playerid][pDrugs] + ammount;
PritonMac=PritonMac-ammount;
SaveMac();
Теперь сделаем сохранение и загрузку
Куда нибудь в конец мода добавьте 2 паблика , ниже расписано о них
PHP:
stock LoadMac()//Теперь мы же хотим чтобы мак который сохраняли в файл , при запуске сервера читался
{
new iniFile = ini_openFile("Mac.ini");//откроем файл
ini_getInteger(iniFile,"Мак в колхозе",KolxozMac);//читаем мак колхоза
ini_getInteger(iniFile,"Мак в притоне",PritonMac);//читаем мак притона
ini_closeFile(iniFile);//закрываем файл
}
//------------------------------------------------------------------------------
stock SaveMac()//Так как мы хотим чтобы мак бесследно не пропал , то делаем сохранение в файл
{
new iniFile = ini_openFile("Mac.ini");//откроем файл
ini_setInteger(iniFile,"Мак в колхозе",KolxozMac);//запишем мак колхоза
ini_setInteger(iniFile,"Мак в притоне",PritonMac);//запишем мак притона
ini_closeFile(iniFile);//закрываем файл
}
Вот и все!
P.S. Не забудьте сменить иды фракций на свои , а также иды машин на которых можно производить продажу и закупку мака.
Для тех кто не понял как все происходит то распишу с 0 , сначала садимся в комбайн и едем на поле , далее мы косим мак , после того как мы собрали мак мы отвозим его на склад , его нужно сдать , после сдачи , садимся в легковую машинку берем определенное кол-тво мака на складе , и едем в притон , и там продаем его по цене в 2 раза больше , вот и все , я думаю все знают где находится респа Колхоза !
Автор: Mr.Brooks
Перевод: Grime228
