| Dima_Tkach | Дата: Среда, 09.11.2011, 22:31 | Сообщение # 1 |

Сообщений: 215
|
Идея заключается в следующем: сбор урожая комбайном => сдать урожай на склад => сесть в легковую машину => взять нарко со склада => отвезти в притон => продать в притоне (на заднем дворе). Работа не жирная но пыльная
Подразумевается, что у Вас уже создана фракция наркофермеров (FAQ по добавлению фракции лежит на форуме), поэтому нужно будем вам самим адаптировать мод под себя.
Инструкция к установке:
1. Добавляем forwards
Code forward Timerdrugs(id); forward Timerdrugs2(id); forward LoadFarmer(); forward SaveFarmer(); forward IsAnFarm(playerid);
2. Добавляем переменные
Code new combine = 0; new drugsobject[110]; new drugsobject2[110]; new drugspickupid[110]; new combine1 = 0; new combine2 = 0; new storagefarm; new storageden; new timerdrug = 25000; new timerdrug2 = 1000; new drugskg[MAX_PLAYERS]; new drugsgr;
3. Создаем файл drugs.ini в папке scriptfiles с содержимым 5000|5000 (заполненность наркофермы|заполненность притона)
4. Добавляем паблики
Code public IsAnFarm(playerid) { if(IsPlayerConnected(playerid)) { new leader = PlayerInfo[playerid][pLeader]; new member = PlayerInfo[playerid][pMember]; if(member==5)// { return 1; } if(leader==5)// { return 1; } } return 0; } public LoadFarmer() { new arrCoords[2][64]; new strFromFile2[256]; new File: file = fopen("drugs.ini", io_read); if (file) { fread(file, strFromFile2); split(strFromFile2, arrCoords, '|');
storagefarm = strval(arrCoords[0]); storageden = strval(arrCoords[1]);
fclose(file); } return 1; }
public SaveFarmer() { new coordsstring[256]; format(coordsstring, sizeof(coordsstring), "%d|%d", storagefarm, storageden); new File: file2 = fopen("drugs.ini", io_write); fwrite(file2, coordsstring); fclose(file2); return 1; } public Timerdrugs(id) { for(new d=0; d < sizeof(drugsposition); d++) { if (d == id) { drugsobject[d] = CreateStreamObject(3409,drugsposition[d][0],drugsposition[d][1],128.015625,0.00000000,0.00000000,0.00000000, 250.0); // Ai?ioa aiia Ioneoea drugsobject2[d] = CreateStreamObject(3409,drugsposition[d][0],drugsposition[d][1],129.015625,0.00000000,0.00000000,0.00000000, 250.0); // Ai?ioa aiia Ioneoea drugspickupid[id] = CreatePickup(1242, 14, drugsposition[d][0], drugsposition[d][1], 127.615625); // } } return 1; } public Timerdrugs2(id) { for(new d=0; d < sizeof(drugsposition); d++) { if (d == id) { drugsobject[d] = CreateStreamObject(3409,drugsposition[d][0],drugsposition[d][1],128.015625,0.00000000,0.00000000,0.00000000, 250.0); // Ai?ioa aiia Ioneoea drugsobject2[d] = CreateStreamObject(3409,drugsposition[d][0],drugsposition[d][1],129.015625,0.00000000,0.00000000,0.00000000, 250.0); // Ai?ioa aiia Ioneoea drugspickupid[id] = CreatePickup(1242, 14, drugsposition[d][0], drugsposition[d][1], 127.615625); // } } return 1; }
5. Ко всем массивам добавляем
Code new Float:drugsposition[110][3] = { {-1187.31481934,-1055.79821777,129.2187500}, {-1189.56530762,-1040.53283691,129.2187500}, {-1188.87915039,-1024.93859863,129.2187500}, { -1189.06616211,-1009.78601074,129.2187500}, {-1188.89440918,-993.43719482,129.21875000}, {-1188.73217773,-977.98822021,129.21875000}, {-1 188.56884766,-961.78900146,129.21192932}, {-1188.39331055,-945.14044189,129.21192932}, {-1188.20520020,-927.89184570,129.21875000}, {-117 2.75439453,-1055.18518066,129.2187500}, {-1173.97363281,-1040.55773926,129.2187500}, {-1173.62121582,-1025.41247559,129.2187500}, {-1173. 25537109,-1009.66662598,129.2187500}, {-1172.88537598,-993.77050781,129.21875000}, {-1172.53662109,-978.77423096,129.21875000}, {-1172.17 700195,-963.02807617,129.21192932}, {-1171.77636719,-946.08258057,129.21875000}, {-1171.39965820,-929.88659668,129.21875000}, {-1155.4638 6719,-928.94873047,129.21875000}, {-1154.79638672,-945.76794434,129.21875000}, {-1156.58752441,-963.67852783,129.21875000}, {-1156.317871 09,-979.22033691,129.21875000}, {-1157.56787109,-993.56604004,129.21875000}, {-1156.64050293,-1009.90838623,129.2187500}, {-1159.36169434 ,-1024.94433594,129.2187500}, {-1157.01196289,-1040.41101074,129.2187500}, {-1155.49243164,-1054.99658203,129.2187500}, {-1140.38330078,- 1055.52819824,129.2187500}, {-1140.78295898,-1041.13354492,129.2187500}, {-1141.21875000,-1025.38964844,129.2187500}, {-1140.58447266,-10 09.60797119,129.2187500}, {-1141.10571289,-994.78100586,129.21875000}, {-1139.44055176,-979.26989746,129.21875000}, {-1140.80786133,-962. 24249268,129.21875000}, {-1138.78747559,-946.35577393,129.21875000}, {-1138.09179688,-930.89501953,129.21875000}, {-1124.15441895,-920.72 192383,129.21875000}, {-1124.33166504,-937.24218750,129.21875000}, {-1124.52209473,-955.39111328,129.21875000}, {-1124.67944336,-970.3901 9775,129.21875000}, {-1124.84936523,-986.58935547,129.21875000}, {-1124.90209961,-1002.10119629,129.2187500}, {-1124.42004395,-1019.49462 891,129.2187500}, {-1123.96057129,-1036.43835449,129.2119293}, {-1123.48571777,-1053.23168945,129.2187500}, {-1108.98327637,-1054.3532714 8,129.2187500}, {-1108.30395508,-1038.39526367,129.2119293}, {-1107.98291016,-1021.91979980,129.2187500}, {-1107.80883789,-1004.30706787, 129.2187500}, {-1105.61840820,-986.89428711,129.21875000}, {-1103.52941895,-971.74108887,129.21875000}, {-1104.63134766,-955.63098145,129 .21875000}, {-1106.94091797,-940.09698486,129.21875000}, {-1108.34448242,-924.22302246,129.21875000}, {-1012.87835693,-1054.74340820,129. 2187500}, {-1028.50744629,-1056.21691895,129.2187500}, {-1045.73278809,-1057.13134766,129.2119293}, {-1061.66149902,-1056.99194336,129.21 19293}, {-1077.06848145,-1057.35278320,129.2119293}, {-1092.80615234,-1057.97656250,129.2119293}, {-1011.23474121,-1037.86560059,129.2187 500}, {-1026.20312500,-1038.84130859,129.2187500}, {-1042.36877441,-1039.89501953,129.2187500}, {-1057.78503418,-1040.91491699,129.211929 3}, {-1073.18676758,-1040.64001465,129.2187500}, {-1089.89001465,-1039.05200195,129.2187500}, {-1092.54016113,-1023.97473145,129.2187500} , {-1076.18334961,-1024.82812500,129.2187500}, {-1059.31005859,-1025.02587891,129.2119293}, {-1043.20617676,-1023.74218750,129.2119293}, { -1026.94555664,-1021.79357910,129.2187500}, {-1011.39929199,-1020.95043945,129.21875000}, {-1009.23950195,-1005.12329102,129.21875000}, { -1024.79919434,-1006.01794434,129.21875000}, {-1040.18994141,-1008.06787109,129.21875000}, {-1055.79724121,-1009.36218262,129.21875000}, { -1072.88232422,-1009.27752686,129.2187500}, {-1089.61987305,-1006.56921387,129.2187500}, {-1089.90637207,-990.40533447,129.21875000}, {-1 074.50830078,-994.03479004,129.21875000}, {-1059.16931152,-994.19226074,129.21875000}, {-1044.15380859,-992.81201172,129.21875000}, {-102 9.59423828,-990.64440918,129.21875000}, {-1013.26586914,-988.80895996,129.21875000}, {-1011.06347656,-973.12219238,129.21875000}, {-1026. 72985840,-974.30920410,129.21875000}, {-1043.22570801,-976.97375488,129.21875000}, {-1060.17089844,-979.11505127,129.21875000}, {-1076.22 253418,-978.95446777,129.21875000}, {-1089.08325195,-974.91864014,129.21875000}, {-1011.07159424,-956.27905273,129.21875000}, {-1026.5676 2695,-959.22583008,129.21875000}, {-1042.13696289,-961.29693604,129.21875000}, {-1057.66516113,-964.20458984,129.21875000}, {-1072.296875 00,-965.26214600,129.21875000}, {-1087.87744141,-959.47808838,129.21875000}, {-1091.77197266,-944.33349609,129.21875000}, {-1093.39648438 ,-927.29022217,129.21875000}, {-1078.48767090,-924.56488037,129.21875000}, {-1063.34533691,-924.88787842,129.21875000}, {-1047.32604980,- 925.84741211,129.21875000}, {-1032.52087402,-925.52294922,129.21875000}, {-1016.18963623,-925.02722168,129.21875000}, {-1076.98339844,-94 1.43719482,129.21875000}, {-1064.08984375,-948.88891602,129.21875000}, {-1055.39025879,-938.28930664,129.21875000}, {-1039.02697754,-944. 04858398,129.21875000}, {-1023.03796387,-943.14624023,129.21875000}, {-1009.17590332,-938.94738770,129.21875000}, {-1199.30883789,-919.80 627441,129.21875000} };
6. Находим public OnPlayerPickUpPickup и в самый конец кидаем
Code for(new d=0; d < sizeof(drugsposition); d++) { if(pickupid == drugspickupid[d]) {
if(PlayerInfo[playerid][pMember] == 5 || PlayerInfo[playerid][pLeader] == 5) { new newcar = GetPlayerVehicleID(playerid); if(newcar == 472 || newcar == 473) { if(newcar == 472) { if (combine1 > 90) {
new text[64]; format(text, sizeof(text), "combine is full"); GameTextForPlayer(playerid, text, 5000, 4); SetPlayerCheckpoint(playerid, -1058.386108, -1195.627197, 129.188858 , 10.0); DestroyObject(drugsobject[d]); DestroyObject(drugsobject2[d]); DestroyPickup(drugspickupid[d]); SetTimerEx("Timerdrugs", timerdrug, false, "d", d);
return 1; } combine1 +=10; new text[64]; format(text, sizeof(text), "MAK %d/100",combine1); GameTextForPlayer(playerid, text, 5000, 4); } else if(newcar == 473) { if (combine2 > 90) { new text[64]; format(text, sizeof(text), "combine is full"); GameTextForPlayer(playerid, text, 5000, 4); SetPlayerCheckpoint(playerid, -1058.386108, -1195.627197, 129.188858 , 10.0); DestroyObject(drugsobject[d]); DestroyObject(drugsobject2[d]); DestroyPickup(drugspickupid[d]); SetTimerEx("Timerdrugs", timerdrug, false, "d", d); return 1; } combine2 +=10; new text[64]; format(text, sizeof(text), "MAK %d/100",combine2); GameTextForPlayer(playerid, text, 5000, 4); } DestroyObject(drugsobject[d]); DestroyObject(drugsobject2[d]); DestroyPickup(drugspickupid[d]); SetTimerEx("Timerdrugs2", timerdrug, false, "d", d); } else { //format(text, sizeof(text), "combine is full"); //GameTextForPlayer(playerid, text, 5000, 4); //SetPlayerCheckpoint(playerid, -1058.386108, -1195.627197, 129.188858 , 10.0); DestroyObject(drugsobject[d]); DestroyObject(drugsobject2[d]); DestroyPickup(drugspickupid[d]); SetTimerEx("Timerdrugs", timerdrug2, false, "d", d); return 1; } } } }
7. Добавляем команды
Code if(strcmp(cmd,"/mac",true)==0) { if(IsPlayerConnected(playerid)) { if (!IsAnFarm(playerid)) { SendClientMessage(playerid,COLOR_GREY,"Вы не наркофермер!"); return 1; } new x_nr[256]; x_nr = strtok(cmdtext, idx); if(!strlen(x_nr)) { SendClientMessage(playerid, COLOR_WHITE, "+++:::Crazy_Universe:::+++ Используйте: /mac [название]"); SendClientMessage(playerid, COLOR_WHITE, "Используйте: buy, sell, load."); return 1; } if(strcmp(x_nr,"buy",true) == 0) // покупка { if(IsPlayerConnected(playerid)) { if(!PlayerToPoint(5.0, playerid, -1058.386108, -1195.627197, 129.188858))//Координаты покупки { SendClientMessage(playerid, COLOR_GREY, "Вы не около склада наркотиков");// return 1; } if (!IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid, COLOR_GREY, "Вы не в машине");// return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "+++:::Crazy_Universe:::+++ Используйте: /mac buy [количество]");// return 1; } drugsgr = strval(tmp); if(drugsgr < 1 || drugsgr > 100)// Диапазон покупки { SendClientMessage(playerid, COLOR_GREY, "Вы не можете возить более 100 грамм."); return 1; } if(GetPlayerMoney(playerid) < drugsgr * 50)// Кол-во материалов умножаем на 50, это и будет оплата за маты + проверка на наличные { SendClientMessage(playerid, COLOR_GREY, "У вас не хватает наличных."); return 1; } new bugs = drugskg[playerid] + drugsgr; if(bugs > 100) { SendClientMessage(playerid, COLOR_GREY, "Вы не можете взять больше."); return 1; } if(storagefarm < drugsgr)// { SendClientMessage(playerid, COLOR_GREY, "На ферме возможно закончилось нарко"); return 1; } drugskg[playerid] += drugsgr; format(string, sizeof(string), "В Вашей машине %d грамм. Последняя покупка: $%d !", drugskg[playerid], drugsgr * 50); SendClientMessage(playerid, COLOR_GREY, string); SetPlayerCheckpoint(playerid, 2161.416503, -1659.224243, 14.811087 , 5.0); GivePlayerMoney(playerid, - drugsgr * 50); storagefarm -= drugsgr; SaveFarmer(); } } else if(strcmp(x_nr,"sell",true) == 0) { if(IsPlayerConnected(playerid)) { if(!PlayerToPoint(5.0, playerid, 2159.466552, -1659.275146, 15.455442)) { SendClientMessage(playerid, COLOR_GREY, "Вы не около склада"); return 1; } if (!IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid, COLOR_GREY, "Вы не в машине");// return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "+++:::Crazy_Universe:::+++ Используйте: /mac sell [количество]"); return 1; } drugsgr = strval(tmp); if (storageden >= 50000) { SendClientMessage(playerid, COLOR_GREY, "Притон полон!"); DisablePlayerCheckpoint(playerid);
return 1; } if(drugsgr > drugskg[playerid]) { SendClientMessage(playerid, COLOR_GREY, "У Вас нету столько нарко!"); return 1; } //drugskg[playerid] = drugsgr; new sellprice = (100)*(drugsgr); // Цена на продажу format(string, sizeof(string), "Вы продали %d грамм за %d$!", drugsgr, sellprice); SendClientMessage(playerid, COLOR_GREY, string); GivePlayerMoney(playerid, (100)*(drugskg[playerid])); storageden += drugsgr; drugskg[playerid] -= drugsgr; format(string, sizeof(string), "Вы продали %d грамм за %d$! Остаток: %d", drugsgr, sellprice, drugskg[playerid]); SendClientMessage(playerid, COLOR_GREY, string); DisablePlayerCheckpoint(playerid); SaveFarmer(); } }
else if(strcmp(x_nr,"load",true) == 0) { if(IsPlayerConnected(playerid)) { if(!PlayerToPoint(10.0, playerid, -1058.386108, -1195.627197, 129.188858)) { SendClientMessage(playerid, COLOR_GREY, "Вы не около склада"); return 1; } format(string, sizeof(string), "На ферме %d/50000 \n В притоне %d/50000 ", storagefarm, storageden); SendClientMessage(playerid, COLOR_GREY, string); } } } } if(strcmp(cmd, "/sellmac", true) == 0) { if(IsPlayerConnected(playerid)) { if (!IsAnFarm(playerid)) { SendClientMessage(playerid,COLOR_GREY,"Вы не наркофермер!"); return 1; } if(PlayerToPoint(5.0, playerid, -1058.386108, -1195.627197, 129.188858)) { if (storagefarm >= 50000) { SendClientMessage(playerid, COLOR_GREY, "На ферме больше нет места для хранения!"); DisablePlayerCheckpoint(playerid); return 1; } new newcar = GetPlayerVehicleID(playerid); if(newcar == 472) { combine = combine1; } else if(newcar == 473) { combine = combine2; } //new farm = 50000 - storagefarm; DisablePlayerCheckpoint(playerid);
new sellprice = (100)*(combine); // Цена на продажу format(string, sizeof(string), "Вы продали %d за %d$!", combine, sellprice); SendClientMessage(playerid, COLOR_GREY, string); GivePlayerMoney(playerid, (100)*(combine)); storagefarm += combine; combine = 0; if (newcar == 472) { combine1 = combine; } else if (newcar == 473) { combine2 = combine; } SaveFarmer(); } }}
8. Ищем if(strcmp(cmd,"/get",true)==0) и перед
Code format(string, sizeof(string), "* Вы купили %d грамм за $%d.", ammount, price); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); GivePlayerMoney(playerid, -price); PlayerInfo[playerid][pDrugs] = ammount;
Вставляем это:
Code if (ammount > storageden) { SendClientMessage(playerid, COLOR_GREY, "В притоне нету нарко! Наркофермеры не завезли."); return 1; }
Чуть ниже смотрим PlayerInfo[playerid][pDrugs] = ammount; и перед этой строчкой добавляем
Code storageden -=ammount; SaveFarmer();
| |
| |
| |