| Tailer | Дата: Четверг, 09.02.2012, 11:41:29 | Сообщение # 1 |
| Автор:9GYAR Описание:Органы закон, должны на авианосце привезти материалы на склад в зону 51...там есть пекапы по которым банды могут воровать материалы...в общак банд можно так же воровать маты теперь...когда подходишь к пекапу набираешь команду /materials get - взять 1к матов садишься в свой фургон (обязательно в фургон от банды) вводишь /materials put положить маты в фургон...команда /unloding разгрузить маты у себя на базе Можно продать материалы мафии от банд,командой /materialssell Теперь все сохраняется каждую секунду...так что вы не потеряете ни один материал.
1. Добавляем новые переменные: Code new mats1; new mats2; new colmats=100000; new matscar1; new matscar2; new objakrm=50000; new objakyak=50000; new objaklcn=50000; new objakgro = 50000 ; new monobjakgro = 10000 ; new objakbal = 50000 ; new monobjakbal = 10000 ; new objakcor = 50000 ; new monobjakcor = 10000 ; new objakvag = 50000 ; new monobjakvag = 10000 ; new objakrif = 50000 ; new monobjakrif = 10000 ; new monobjaklcn = 10000 ; new monobjakrm = 10000 ; new monobjakyak = 10000 ; new furgon[5]; new matso; new objaklspd; new objaksfpd; new objaklvpd; new objakarm2; new objakarm1; new objakfbi;
2. В public OnPlayerPickUpPickup добавляем следующие: Code else if(pickupid == mats1) { new l = PlayerInfo[playerid][pLeader]; new m = PlayerInfo[playerid][pMember]; if(l==14 || l==1 ||l==2||l==3||l==8||l==12||l==20 || l==15 || l==16 || l==17 || l==18 || m==14 || m==15 || m==16 || m==17 || m==18|| m==1 ||m==2||m==3||m==8||m==12||m==20) { if(colmats < 500) { SendClientMessage(playerid, COLOR_RED, "На складе нет материалов"); } else { PlayerInfo[playerid][pMats]+=500; SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы взяли несколько комплектов"); colmats=colmats-500; } } else { SendClientMessage(playerid, COLOR_GREEN, "Вы не состоите в преступных группировках или вы не законник"); } return 1; } else if(pickupid == mats2) { new l = PlayerInfo[playerid][pLeader]; new m = PlayerInfo[playerid][pMember]; if(l==14 || l==1 ||l==2||l==3||l==8||l==12||l==20 || l==15 || l==16 || l==17 || l==18 || m==14 || m==15 || m==16 || m==17 || m==18|| m==1 ||m==2||m==3||m==8||m==12||m==20) { if(colmats < 500) { SendClientMessage(playerid, COLOR_RED, "На складе нет материалов"); } else { PlayerInfo[playerid][pMats]+=500; SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы взяли несколько комплектов"); colmats=colmats-500; } } else { SendClientMessage(playerid, COLOR_GREEN, "Вы не состоите в преступных группировках или вы не законник"); } return 1; }
3. Теперь нужно сделать сохранение материалов: Добавляем forward Code forward SaveMaterials(); forward LoadMaterials();
4. Создаем 2 public:
Code public SaveMaterials() { new coordsstring[256]; format(coordsstring, sizeof(coordsstring), "%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i",colmats,objakgro,objakbal,objakcor,objakvag,objakrif,objaklspd,objaklvpd,objaksfpd,objakfb i,objakarm1,objakarm2,objaklcn,objakrm,objakyak); new File: file2 = fopen("materials.ini", io_write); fwrite(file2, coordsstring); fclose(file2); return 1; } public LoadMaterials() { new arrCoords[15][64]; new strFromFile2[256]; new File: file = fopen("materials.ini", io_read); if (file) { fread(file, strFromFile2); split(strFromFile2, arrCoords, '|'); colmats = strval(arrCoords[0]); objakgro = strval(arrCoords[1]); objakbal = strval(arrCoords[2]); objakcor = strval(arrCoords[3]); objakvag = strval(arrCoords[4]); objakrif = strval(arrCoords[5]); objaklspd = strval(arrCoords[6]); objaklvpd = strval(arrCoords[7]); objaksfpd = strval(arrCoords[8]); objakfbi = strval(arrCoords[9]); objakarm1 = strval(arrCoords[10]); objakarm2 = strval(arrCoords[11]); objaklcn = strval(arrCoords[12]); objakrm = strval(arrCoords[13]); objakyak = strval(arrCoords[14]); fclose(file); } return 1; }
5. В public OnGameModeInit() Code SetTimer("LoadMaterials", 1000, 0); objakgro = CreatePickup(1239,2,2505.8123,-1694.6447,13.5579); objakcor = CreatePickup(1239,2,1663.2285,-2113.6067,13.5469); objakbal = CreatePickup(1239,2,2644.9167,-2033.7373,13.5540); objakrif = CreatePickup(1239,2,2184.0181,-1812.2617,13.5469); objakvag = CreatePickup(1239,2,2767.7549,-1616.6736,10.9219); mats1 = CreatePickup(1239,2,129.8493,1875.6160,17.8359); mats2 = CreatePickup(1239,2,124.8786,1876.2286,17.8359); matscar1 = AddStaticVehicleEx(548,-1287.83801270,447.79321289,9.08756161,0.00000000,-1,-1,30000); //Cargobob matscar2 = AddStaticVehicleEx(470,-1349.24914551,456.36822510,7.29751158,0.00000000,-1,-1,30000); //Patriot CreatePickup(1239,2,275.2503,1829.7740,17.6406); Create3DTextLabel("/materials",0xBFF600FF,275.2503,1829.7740,17.6406,20.0,0); furgon[3]=AddStaticVehicleEx(418,2649.13476562,-2009.16430664,13.49035358,268.69067383,85,85,30000); furgon[2]=AddStaticVehicleEx(418,2505.81274414,-1672.85095215,13.26896763,67.48950195,16,16,30000); furgon[4]=AddStaticVehicleEx(418,2187.64599609,-1797.88012695,13.11032677,49.62463379,108,108,30000); furgon[1]=AddStaticVehicleEx(418,2771.26904297,-1609.55798340,10.67187500,272.66064453,6,6,30000); furgon[0]=AddStaticVehicleEx(418,1694.37329102,-2118.54394531,13.52521706,326.25524902,2,2,30000);
6. public CarEnter(playerid,carid) ставим проверку на транспорт:
Code if(carid >= matscar1 && carid <= matscar2) { if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3||PlayerInfo[playerid][pMember] == 1|| PlayerInfo[playerid][pLeader] == 1||PlayerInfo[playerid][pMember] == 2|| PlayerInfo[playerid][pLeader] == 2||PlayerInfo[playerid][pMember] == 8|| PlayerInfo[playerid][pLeader] == 8||PlayerInfo[playerid][pMember] == 12|| PlayerInfo[playerid][pLeader] == 12||PlayerInfo[playerid][pMember] == 20|| PlayerInfo[playerid][pLeader] == 20)//фракции ставим свои...это законники { ShowPlayerDialog(playerid,5551,DIALOG_STYLE_MSGBOX,"Система материалов","{FF0000}Вы хотете отвезти материалы на военную базу?","Да","Отмена"); } else { SendClientMessage(playerid,COLOR_LIGHTRED2,"Вы законник!"); RemovePlayerFromVehicle(playerid); } }
7.Далее добавляем в public OnDialogResponse Code if(dialogid == 5551) { if(response) { SetPlayerCheckpoint(playerid,136.7081,1875.6571,22.4375,5.0); } }
8. В public OnPlayerEnterCheckpoint добавляем Code if(PlayerToPoint(2.0, playerid,136.7081,1875.6571,22.4375)) { colmats+=5000; DisablePlayerCheckpoint(playerid); } Добавлено (09.02.2012, 11:41:29) --------------------------------------------- 9. Создаем сами команды в public OnPlayerCommandText Code if(strcmp(cmd,"/materials",true)==0) { if(IsPlayerConnected(playerid)) { new l = PlayerInfo[playerid][pLeader]; new m = PlayerInfo[playerid][pMember]; new ran = PlayerInfo[playerid][pRank]; if(l==14|| l==15 || l==16 || l==17 || l==18 || (m==14&&ran>=4) || (m==15&&ran>=4) || (m==16&&ran>=4) || (m==17&&ran>=4) || (m==18&&ran>=4)) { new x_nr[256]; x_nr = strtok(cmdtext, idx); if(!strlen(x_nr)) { SendClientMessage(playerid, COLOR_WHITE, " Используйте: /materials [name]"); SendClientMessage(playerid, COLOR_WHITE, "Доступные названия: Get, Put."); return 1; } if(strcmp(x_nr,"get",true) == 0) { if(PlayerToPoint(3.0,playerid,275.2503,1829.7740,17.6406)) { if( matso >= 1000) { SendClientMessage(playerid, COLOR_GREY, "У вас уже есть на руках большой комплект материалов!"); } else { matso = 1000; SendClientMessage(playerid, COLOR_GREY, "Вы взяли один большой комплект материалов!"); SendClientMessage(playerid, COLOR_GREY, "Отнесите его в ваш фургон и отвезите на базу!"); ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1); SetPlayerAttachedObject(playerid, 1 , 2060, 1,0.11,0.36,0.0,0.0,90.0); ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1); } } } else if(strcmp(x_nr,"put",true) == 0) { new caridi = GetPlayerVehicleID(playerid); if(caridi == furgon[0] || caridi == furgon[1]|| caridi == furgon[2]|| caridi == furgon[3]|| caridi == furgon[4]) { if(mater[caridi] > 3000) { SendClientMessage(playerid,COLOR_GREY,"Больше 3-х больших комплектов материалов возить нельзя!"); return 1; } else { if (matso==1000) { mater[caridi] += 1000; matso-=1000; SendClientMessage(playerid, COLOR_GREY, "Вы положили большой комплект материалов фургон!"); if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1); } } } else { SendClientMessage(playerid, COLOR_GREY, "Вы должны сидеть в фургоне чтоб положить комплект материалов!"); } } } else { SendClientMessage(playerid,COLOR_GREY,"Вы не состоите в преступных группировках либо у вас маленький ранг"); return 1; } } return 1; } if(strcmp(cmd, "/warehouse", true) == 0) { if(IsPlayerConnected(playerid)) { if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)//New Cops Spawn { format(string, sizeof(string), "На складе LSPD %d/50000 матов", objaklspd); SendClientMessage(playerid, COLOR_BLUE, string); return 1; } if (PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8)//New Cops Spawn { format(string, sizeof(string), "На складе SFPD %d/50000 матов", objaksfpd); SendClientMessage(playerid, COLOR_BLUE, string); return 1; } if (PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12)//rm { format(string, sizeof(string), "На складе LVPD %d/50000 матов", objaklvpd); SendClientMessage(playerid, COLOR_BLUE, string); return 1; } if (PlayerInfo[playerid][pMember] == 19 || PlayerInfo[playerid][pLeader] == 19)//51 { format(string, sizeof(string), "На складе: %d/100000 матов", objakarm2); SendClientMessage(playerid, COLOR_BLUE, string); return 1; } if (PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)//sf { format(string, sizeof(string), "На складе : %d/50000 матов", objakarm1); SendClientMessage(playerid, COLOR_BLUE, string); return 1; } if (PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2)// FBI { format(string, sizeof(string), "На складе FBI %d матов", objakfbi); SendClientMessage(playerid, COLOR_BLUE, string); return 1; } } return 1; } if(strcmp(cmd, "/materialssell", true) == 0) { new l = PlayerInfo[playerid][pLeader]; new m = PlayerInfo[playerid][pMember]; new ran = PlayerInfo[playerid][pRank]; if(l==14|| l==15 || l==16 || l==17 || l==18 || (m==14&&ran>=4) || (m==15&&ran>=4) || (m==16&&ran>=4) || (m==17&&ran>=4) || (m==18&&ran>=4)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /materialssell [êîë-âî] [1-2-3]"); return 1; } new playa = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /materialssell [êîë-âî] [1-2-3]"); SendClientMessage(playerid, COLOR_GRAD2, "Используйте: 1-LCN 2-RM 3-Yakuza"); return 1; } new coli = strval(tmp); if(coli < 1 || coli > 3) { SendClientMessage(playerid, COLOR_GREY, "не меньше 1, и больше 3!"); return 1; } if(coli == 1) { if(l==14||(m==14&&ran>=4)) { objakgro -=playa; monobjakgro += playa*100; } else if(l==15||(m==15&&ran>=4)) { objakcor -=playa; monobjakcor += playa*100; } else if(l==16||(m==16&&ran>=4)) { objakbal -=playa; monobjakbal += playa*100; } else if(l==17||(m==17&&ran>=4)) { objakrif -=playa; monobjakrif += playa*100; } else if(l==18||(m==18&&ran>=4)) { objakvag -=playa; monobjakvag += playa*100; } objaklcn += playa; monobjaklcn -= playa*100; format(string, sizeof(string), "*Вы продали %d материалов LCN.",playa); SendClientMessage(playerid,COLOR_GREY,string); return 1; } else if(coli == 2) { if(l==14||(m==14&&ran>=4)) { objakgro -=playa; monobjakgro += playa*100; } else if(l==15||(m==15&&ran>=4)) { objakcor -=playa; monobjakcor += playa*100; } else if(l==16||(m==16&&ran>=4)) { objakbal -=playa; monobjakbal += playa*100; } else if(l==17||(m==17&&ran>=4)) { objakrif -=playa; monobjakrif += playa*100; } else if(l==18||(m==18&&ran>=4)) { objakvag -=playa; monobjakvag += playa*100; } objakrm += playa; monobjakrm -= playa*100; format(string, sizeof(string), "*Вы продали %d материалов русской мафии.",playa); SendClientMessage(playerid,COLOR_GREY,string); return 1; } else if(coli == 3) { if(l==14||(m==14&&ran>=4)) { objakgro -=playa; monobjakgro += playa*100; } else if(l==15||(m==15&&ran>=4)) { objakcor -=playa; monobjakcor += playa*100; } else if(l==16||(m==16&&ran>=4)) { objakbal -=playa; monobjakbal += playa*100; } else if(l==17||(m==17&&ran>=4)) { objakrif -=playa; monobjakrif += playa*100; } else if(l==18||(m==18&&ran>=4)) { objakvag -=playa; monobjakvag += playa*100; } objakyak += playa; monobjakyak -= playa*100; format(string, sizeof(string), "*Вы продали %d материалов Yakuza.",playa); SendClientMessage(playerid,COLOR_GREY,string); return 1; } } else { SendClientMessage(playerid, COLOR_GREY, "Вы не в банде!"); return 1; } return 1; } if(strcmp(cmd, "/unloding", true) == 0) { if(IsPlayerConnected(playerid)) { new l = PlayerInfo[playerid][pLeader]; new m = PlayerInfo[playerid][pMember]; new ran = PlayerInfo[playerid][pRank]; new caridi = GetPlayerVehicleID(playerid); if(l==14|| (m==14&&ran>=4)) { format(string, sizeof(string), "*Вы положили в общак банды Grove Street %d материалов.",mater[caridi]); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); objakgro+=mater[caridi]; } else if(l==15||m==15&&ran>=4) { format(string, sizeof(string), "*Вы положили в общак банды El Coronas %d материалов.",mater[caridi]); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); objakcor+=mater[caridi]; } else if(l==16||m==16&&ran>=4) { format(string, sizeof(string), "*Вы положили в общак банды Ballas gang %d материалов.",mater[caridi]); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); objakbal+=mater[caridi]; } else if(l==17||m==17&&ran>=4) { format(string, sizeof(string), "*Вы положили в общак банды Rifa gang %d материалов.",mater[caridi]); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); objakrif+=mater[caridi]; } else if(l==18||m==18&&ran>=4) { format(string, sizeof(string), "*Вы положили в общак банды Vagos gang %d материалов.",mater[caridi]); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); objakvag+=mater[caridi]; } } return 1; }
|
| |
| |