Boufen | Дата: Четверг, 18.04.2013, 22:16 | Сообщение # 1 |
Проверенный временем
Группа: Проверенный
Сообщений: 204
Статус: Offline
| Гангзону нельзя захватить если игрок(и) этой банды не онлайн Чтобы захватить гангзону введите /capture ждете 2 минуты (на подготовку) и стреляетесь, если вы всех убили и их на ГангЗоне нету то территория будет принадлежать вам. Ну так вот, начнем:
Ко всем new: Код new Float:STANDARTGangZone[49][4] = { {0.0, 0.0,0.0, 0.0}, {2577.861572, -1056.913940, 2787.590087, -898.770690}, {2368.133056, -1056.913940, 2577.861572, -898.770690}, {2158.404541, -1056.913940, 2368.133056, -898.770690}, {1948.676025, -1056.913940, 2158.404541, -898.770690}, {1738.947509, -1056.913940, 1948.676025, -898.770690}, {2787.590087, -1056.913940, 2997.318603, -898.770690}, {2787.590087, -1215.057128, 2997.318603, -1056.913940}, {2787.590087, -1373.200439, 2997.318603, -1215.057128}, {2787.590087, -1531.343750, 2997.318603, -1373.200439}, {2787.590087, -1689.486938, 2997.318603, -1531.343750}, {2787.590087, -1847.630126, 2997.318603, -1689.486938}, {2787.590087, -2005.773437, 2997.318603, -1847.630126}, {2787.590087, -2163.916503, 2997.318603, -2005.773437}, {2577.861572, -1215.057128, 2787.590087, -1056.913940}, {2577.861572, -1373.200439, 2787.590087, -1215.057128}, {2577.861572, -1531.343750, 2787.590087, -1373.200439}, {2577.861572, -1689.486938, 2787.590087, -1531.343750}, {2577.861572, -1847.630126, 2787.590087, -1689.486938}, {2577.861572, -2005.773437, 2787.590087, -1847.630126}, {2577.861572, -2163.916503, 2787.590087, -2005.773437}, {2368.133056, -1215.057128, 2577.861572, -1056.913940}, {2368.133056, -1373.200439, 2577.861572, -1215.057128}, {2368.133056, -1531.343750, 2577.861572, -1373.200439}, {2368.133056, -1689.486938, 2577.861572, -1531.343750}, {2368.133056, -1847.630126, 2577.861572, -1689.486938}, {2368.133056, -2005.773437, 2577.861572, -1847.630126}, {2368.133056, -2163.916503, 2577.861572, -2005.773437}, {2158.404541, -1215.057128, 2368.133056, -1056.913940}, {2158.404541, -1373.200439, 2368.133056, -1215.057128}, {2158.404541, -1531.343750, 2368.133056, -1373.200439}, {2158.404541, -1689.486938, 2368.133056, -1531.343750}, {2158.404541, -1847.630126, 2368.133056, -1689.486938}, {2158.404541, -2005.773437, 2368.133056, -1847.630126}, {2158.404541, -2163.916503, 2368.133056, -2005.773437}, {1948.676025, -1215.057128, 2158.404541, -1056.913940}, {1948.676025, -1373.200439, 2158.404541, -1215.057128}, {1948.676025, -1531.343750, 2158.404541, -1373.200439}, {1948.676025, -1689.486938, 2158.404541, -1531.343750}, {1948.676025, -1847.630126, 2158.404541, -1689.486938}, {1948.676025, -2005.773437, 2158.404541, -1847.630126}, {1948.676025, -2163.916503, 2158.404541, -2005.773437}, {1738.947509, -1215.057128, 1948.676025, -1056.913940}, {1738.947509, -1373.200439, 1948.676025, -1215.057128}, {1738.947509, -1531.343750, 1948.676025, -1373.200439}, {1738.947509, -1689.486938, 1948.676025, -1531.343750}, {1738.947509, -1847.630126, 1948.676025, -1689.486938}, {1738.947509, -2005.773437, 1948.676025, -1847.630126}, {1738.947509, -2163.916503, 1948.676025, -2005.773437} }; new OnZONE[49][20]; new ZoneOnBattle[49]; new ZoneTimer[49]; new allowedfactions[] = { 13,14,16,19,15}; new GZSafeTime[49]; enum GzoneInfo { gID, Float:gCoords[4], gFrakVlad, gNapad, } new GZInfo[49][GzoneInfo]; new FrakCD[20]; Ко всем forward'ам: Код forward LoadGZ(); forward SaveGZ(); forward GzCheck(); forward PlayerToKvadrat( playerid, Float:min_x, Float:min_y, Float:max_x, Float:max_y ); Ко всем stock: Код stock GetGangZoneColor(gangzonex) { new zx; switch(GZInfo[gangzonex][gFrakVlad]) { case 13: zx =0x00FF1465; case 14: zx = 0x00EBFF65; case 16: zx =0xFF00EB65; case 19: zx =0x0087FF65; case 15: zx =0xFFC80065; default: zx = 0xFFBE0065; } return zx; }
stock GetGZColorF(fnumber) { new zx; switch(fnumber) { case 13: zx =0x00FF1465; case 14: zx = 0x00EBFF65; case 16: zx =0xFF00EB65; case 19: zx =0x0087FF65; case 15: zx =0xFFC80065; } return zx; }
stock IsInAllowed(playerid) { for(new i =0;i<sizeof(allowedfactions);i++) { if(PlayerInfo [playerid][pMember]== allowedfactions[i]||PlayerInfo [playerid][pLeader]== allowedfactions) return 1; } return 0; }
stock IsInAllowedF(fnumbers) { for(new i =0;i<sizeof(allowedfactions);i++) { if(fnumbers == allowedfactions) return 1; } return 0; }
stock GetGangName(fnumbwer) { new string[256]; switch(fnumbwer) { case 13: format(string,sizeof(string),"Grove Street Gang"); case 14: format(string,sizeof(string),"Los Aztecas Gang"); case 16: format(string,sizeof(string),"The Ballas Gang"); case 19: format(string,sizeof(string),"SF Rifa Gang"); case 15: format(string,sizeof(string),"Los Santos Vagos Gang"); } return string; }
stock IsPlayerInBandOnline(bandid) { for(new i=0; i < GetMaxPlayers(); i++) { if(PlayerInfo [pMember]== bandid || PlayerInfo [pLeader]== bandid) return 1; } return 0; }
stock Name(playerid) { new pl[24]; GetPlayerName(playerid,pl,24); return pl; } Ко всем [b]public[/b]: public LoadGZ() { new string[256]; new File = iniOpen("GangZonesTrigga.ini"); new l[256]; new asd[5][10]; for(new i =0;i<sizeof(GZInfo);i++) { format(string,sizeof(string),"Zone%d",i); new x = iniGet(File,string,l); if(x < 0) { GZInfo[gCoords][0] = STANDARTGangZone[0]; GZInfo[gCoords][1] = STANDARTGangZone[1]; GZInfo[gCoords][2] =STANDARTGangZone[2]; GZInfo[gCoords][3] =STANDARTGangZone[3]; } else { split(l,asd,'|'); GZInfo[gCoords][0] = floatstr(asd[0]); GZInfo[gCoords][1] = floatstr(asd[1]); GZInfo[gCoords][2] = floatstr(asd[2]); GZInfo[gCoords][3] = floatstr(asd[3]); } GZInfo [gFrakVlad]= strval(asd[4]); if(GZInfo [gFrakVlad]== 0) GZInfo [gFrakVlad]= allowedfactions[random(sizeof(allowedfactions))]; GZInfo [gID]= GangZoneCreate(GZInfo[gCoords][0],GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3]); ZoneOnBattle =0; GZSafeTime =0; } iniClose(File); print("Система гангзон успешно загружена!"); }
public SaveGZ() { new string[256]; new File = iniOpen("GangZonesTrigga.ini"); new l[10]; for(new i =0;i<sizeof(GZInfo);i++) { format(l,sizeof(l),"Zone%d",i); format(string,sizeof(string),"%f|%f|%f|%f|%d",GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3],GZInfo[gFrakVlad]); iniSet(File,l,string); } iniClose(File); }
public GzCheck() { new string[256]; for(new i =0;i<sizeof(GZInfo);i++) { if(ZoneOnBattle == 1 && GZSafeTime == 0) { ZoneTimer -=10; if(ZoneTimer <=0) { SendClientMessageToAll(-1,"Наблюдатель: Время на захват зоны вышел. Ничья."); ZoneOnBattle =0; GangZoneStopFlashForAll(GZInfo[gID]); } for(new x =0;x<MAX_PLAYERS;x++) { if(PlayerToKvadrat(x,GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3])&&IsInAllowed(x)) { new faction; if(PlayerInfo [x][pLeader]!=0) {faction = PlayerInfo[x][pLeader];} else { faction = PlayerInfo[x][pMember];} OnZONE [faction]++; } } new asd; for(new x =0;x<20;x++) { if(OnZONE [x]> 0 && IsInAllowedF(x)) asd ++; } if(asd == 1) { for(new x =0;x<20;x++) { if(OnZONE [x]> 0) { new zx,zl; zx = x; zl = i; if(GZInfo [gFrakVlad]== x) {format(string,sizeof(string),"Наблюдатель: Банда %s отстояла свою зону.",GetGangName(zx)); } else {format(string,sizeof(string),"Наблюдатель: Банда %s выйгрывает зону.",GetGangName(zx)); } for(new ads = 13;ads <= 19;ads++) { SendFamilyMessage(ads,GetGangZoneColor(zx),string); } ZoneOnBattle [zl]=0; GZInfo [zl][gNapad]= 0; GZInfo [zl][gFrakVlad]= zx; GangZoneStopFlashForAll(GZInfo[zl][gID]); GangZoneHideForAll(GZInfo[zl][gID]); GangZoneShowForAll(GZInfo[zl][gID],GetGangZoneColor(zl)); break; } } } } } for(new i =0;i<49;i++) { for(new z = 0;z<20;z++) { OnZONE [z]=0; } } }
public PlayerToKvadrat(playerid,Float:min_x,Float:min_y,Float:max_x,Float:max_y) { new Float:xxp,Float:yyp,Float:zzp; GetPlayerPos(playerid, xxp, yyp, zzp); if((xxp <= max_x && xxp >= min_x) && (yyp <= max_y && yyp >= min_y)) return 1; return 0; } В [b]public OnPlayerConnect(playerid)[/b]: for(new i =0;i<49;i++) { GangZoneShowForPlayer(playerid,GZInfo[gID],GetGangZoneColor(i)); } В [b]public OnGameModeInit: SetTimer("GzCheck",10000,1); SetTimer("SaveGZ",100000,1); LoadGZ(); В public SaveAccounts(): SaveGZ(); Ну и команды, в OnPlayerCommandText(playerid, cmdtext[]): new faction; if(PlayerInfo [playerid][pMember]!=0 && PlayerInfo[playerid][pLeader]==0) faction = PlayerInfo[playerid][pMember]; else if(PlayerInfo[playerid][pLeader]!=0 && PlayerInfo[playerid][pMember]==0) faction = PlayerInfo[playerid][pLeader]; else faction =0; if(!strcmp(cmd,"/changegzcolor",true)) { tmp = strtok(cmdtext,idx); new l = strval(tmp); if(!IsInAllowedF(l)) return SendClientMessage(playerid,COLOR_LIGHTRED,"Неправильный ид банды!"); if(PlayerInfo [playerid][pAdmin]>= 6) { for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3])) { GZInfo [gFrakVlad]= l; GangZoneStopFlashForAll(GZInfo[gID]); GangZoneHideForAll(GZInfo[gID]); GangZoneShowForAll(GZInfo[gID],GetGangZoneColor(i)); return 1; } } } } if(!strcmp(cmd,"/capture",true)) { if(FrakCD [faction]== 0) { if(!IsInAllowed(playerid)) { return SendClientMessage(playerid,COLOR_LIGHTRED,"Ваша банда не может учавствовать в захвате зон или вы не на 1 зоне"); } for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[gCoords][0], GZInfo[gCoords][1],GZInfo[gCoords][2],GZInfo[gCoords][3]) && GZInfo [gFrakVlad]!= faction && ZoneOnBattle == 0) { if(!IsPlayerInBandOnline(GZInfo[gFrakVlad])) return SendClientMessage(playerid,COLOR_LIGHTRED,"Зону банды которую вы хотите атаковать нет в онлайне!"); if(PlayerInfo [playerid][pRank]< 5) return SendClientMessage(playerid,COLOR_LIGHTRED,"Иницировать захват можно только с 5 ранга и выше!"); SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,"Ваша Зона под атакой. У вас 2 минуты чтобы подготовится к защите зоны."); SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,"Если через 2 минуты на зоне никого не будет то зона автоматически перейдет к врагу"); format(string,sizeof(string),"%s начал борьбу за зону против %s банды. У вас 2 минуты чтобы подготовится к атаке",Name(p layerid),GetGangName(GZInfo[gFrakVlad])); SendFamilyMessage(faction,COLOR_LIGHTRED,string); GangZoneFlashForAll(GZInfo[gID],GetGZColorF(faction)); GZSafeTime = 120; FrakCD [faction]= 3000; GZInfo [gNapad]= faction; ZoneTimer = 720; ZoneOnBattle = 1; break; } } } else { return SendClientMessage(playerid,COLOR_LIGHTRED,"Ваша банда еще не окрепла с момента последнего захвата. Ждите!"); } } В public SetPlayerUnjail(): for(new i =0;i<49;i++) { if(GZSafeTime>0) { GZSafeTime --; if(GZSafeTime == 60 || GZSafeTime == 120) { format(string,sizeof(string),"У вас осталось %d секунд на подготовку",GZSafeTime); SendFamilyMessage(GZInfo[gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,string); } if(GZSafeTime==0) { format(string,sizeof(string),"Время на подготовку вышло. Если у вас нет ни одного солдата на поле боя то зона автоматически п ереходит к противнику"); SendFamilyMessage(GZInfo[gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[gFrakVlad],COLOR_LIGHTRED,string); } } } for(new i =0;i<sizeof(FrakCD);i++) { if(FrakCD >0) { FrakCD --; if(FrakCD == 0) SendFamilyMessage(i,COLOR_LIGHTRED,"Ваша банда снова может учавствовать в захвате зон"); } } Иды фракций заменяйте на свои ( 13,14,16,19,15 ) Без инклуда mxINI ничего не получится, [url=http://rghost.ru/9599211]скачать[/url] Сам файлик [url=http://rghost.ru/9599031]этот[/url] нужно запихнуть в папкy scriptfiles, иды фрак меняйте на свои Автор: [color=#2e8b57]Trigger[/color] Урок: [color=#008080]Terner[/color][/b][/i]
Подключаю сервера с MySQL - 50 руб. Делаю маппинг на заказ - Цена договорная
|
|
| |