GangWar's с захватом
Dimka_71rus Дата: Среда, 28.12.2011, 11:42:52 | Сообщение # 1
Группа: Пользователи
Сообщений: 360
Этот урок посвещён захвату зон + их сохранение осле рестарта. Итак начнём: Ко всем new: Code
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}; // изменяем ID банд, на свои new GZSafeTime[49]; enum GzoneInfo { gID, Float:gCoords[4], gFrakVlad, gNapad, } new GZInfo[49][GzoneInfo]; new FrakCD[20];
Ко всем forward's: Code
forward LoadGZ(); forward SaveGZ(); forward GzCheck(); forward PlayerToKvadrat( playerid, Float:min_x, Float:min_y, Float:max_x, Float:max_y ); forward LoadZones(); forward SaveZones();
Ко всем stock's: - Не забываем менять ID банд, на свои Code
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[i]) return 1; } return 0; } stock IsInAllowedF(fnumbers) { for(new i =0;i<sizeof(allowedfactions);i++) { if(fnumbers == allowedfactions[i]) 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[i][pMember] == bandid || PlayerInfo[i][pLeader] == bandid) return 1; } return 0; } stock Name(playerid) { new pl[24]; GetPlayerName(playerid,pl,24); return pl; }
Ко всем public's: Code
public LoadGZ() { new string[256]; new File = iniOpen("GangWar's/GangZones.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[i][gCoords][0] = STANDARTGangZone[i][0]; GZInfo[i][gCoords][1] = STANDARTGangZone[i][1]; GZInfo[i][gCoords][2] =STANDARTGangZone[i][2]; GZInfo[i][gCoords][3] =STANDARTGangZone[i][3]; } else { split(l,asd,'|'); GZInfo[i][gCoords][0] = floatstr(asd[0]); GZInfo[i][gCoords][1] = floatstr(asd[1]); GZInfo[i][gCoords][2] = floatstr(asd[2]); GZInfo[i][gCoords][3] = floatstr(asd[3]); } GZInfo[i][gFrakVlad] = strval(asd[4]); if(GZInfo[i][gFrakVlad] == 0) GZInfo[i][gFrakVlad] = allowedfactions[random(sizeof(allowedfactions))]; GZInfo[i][gID] = GangZoneCreate(GZInfo[i][gCoords][0],GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]); ZoneOnBattle[i] =0; GZSafeTime[i] =0; } iniClose(File); print("Система гангзон успешно загружена!"); } public SaveGZ() { new string[256]; new File = iniOpen("GangWar's/GangZones.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[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3],GZInfo[i][gFrakVlad]); iniSet(File,l,string); } iniClose(File); } public GzCheck() { new string[256]; for(new i =0;i<sizeof(GZInfo);i++) { if(ZoneOnBattle[i] == 1 && GZSafeTime[i] == 0) { ZoneTimer[i] -=10; if(ZoneTimer[i] <=0) { SendClientMessageToAll(-1,"Наблюдатель: Время на захват зоны вышел. Ничья."); ZoneOnBattle[i] =0; GangZoneStopFlashForAll(GZInfo[i][gID]); SaveGZ(); SaveZones(); } for(new x =0;x<MAX_PLAYERS;x++) { if(PlayerToKvadrat(x,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3])&&IsInAllowed(x)) { new faction; if(PlayerInfo[x][pLeader] !=0) {faction = PlayerInfo[x][pLeader];} else { faction = PlayerInfo[x][pMember];} OnZONE[i][faction] ++; } } new asd; for(new x =0;x<20;x++) { if(OnZONE[i][x] > 0 && IsInAllowedF(x)) asd ++; } if(asd == 1) { for(new x =0;x<20;x++) { if(OnZONE[i][x] > 0) { new zx,zl; zx = x; zl = i; if(GZInfo[i][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)); SaveGZ(); SaveZones(); break; } } } } } for(new i =0;i<49;i++) { for(new z = 0;z<20;z++) { OnZONE[i][z] =0; } } } public LoadZones() { new arrCoords[2][512]; new strFromFile2[512]; new File: file = fopen("ZonesTrigga.ini", io_read); if (file) { new idx; while (idx < 5) { fread(file, strFromFile2); split(strFromFile2, arrCoords, '|'); gangzone[idx][mainzones] = strval(arrCoords[0]); gangzone[idx][mainzones2] = strval(arrCoords[1]); printf("ZONE %d ",gangzone[idx][mainzones]); idx++; } fclose(file); } return 1; } public SaveZones() { new idx; new File: file2; while (idx < 5) { new coordsstring[512]; format(coordsstring, sizeof(coordsstring), "%d|%d\n", gangzone[idx][mainzones], gangzone[idx][mainzones2] ); if(idx == 0) { file2 = fopen("GangWar's/Zones.ini", io_write); } else { file2 = fopen("GangWar's/Zones.ini", io_append); } fwrite(file2, coordsstring); idx++; fclose(file2); } return 1; } 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; }
В public OnPlayerConnect(playerid): Code
for(new i =0;i<49;i++) { GangZoneShowForPlayer(playerid,GZInfo[i][gID],GetGangZoneColor(i)); }
В public OnGameModeInit: Code
SetTimer("GzCheck",10000,1); SetTimer("SaveGZ",100000,1); LoadGZ(); LoadZones();
Далее в public SaveAccounts():
Лучшие моды,скрипты,карты - вы найдёте на сайте samp-pawno.ru Самые чёткие ответы на ваши вопросы и помощь по скритингу вы найдёте на сайте forum-pawno.ru
Сообщение Этот урок посвещён захвату зон + их сохранение осле рестарта. Итак начнём: Ко всем new: Code
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}; // изменяем ID банд, на свои new GZSafeTime[49]; enum GzoneInfo { gID, Float:gCoords[4], gFrakVlad, gNapad, } new GZInfo[49][GzoneInfo]; new FrakCD[20];
Ко всем forward's: Code
forward LoadGZ(); forward SaveGZ(); forward GzCheck(); forward PlayerToKvadrat( playerid, Float:min_x, Float:min_y, Float:max_x, Float:max_y ); forward LoadZones(); forward SaveZones();
Ко всем stock's: - Не забываем менять ID банд, на свои Code
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[i]) return 1; } return 0; } stock IsInAllowedF(fnumbers) { for(new i =0;i<sizeof(allowedfactions);i++) { if(fnumbers == allowedfactions[i]) 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[i][pMember] == bandid || PlayerInfo[i][pLeader] == bandid) return 1; } return 0; } stock Name(playerid) { new pl[24]; GetPlayerName(playerid,pl,24); return pl; }
Ко всем public's: Code
public LoadGZ() { new string[256]; new File = iniOpen("GangWar's/GangZones.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[i][gCoords][0] = STANDARTGangZone[i][0]; GZInfo[i][gCoords][1] = STANDARTGangZone[i][1]; GZInfo[i][gCoords][2] =STANDARTGangZone[i][2]; GZInfo[i][gCoords][3] =STANDARTGangZone[i][3]; } else { split(l,asd,'|'); GZInfo[i][gCoords][0] = floatstr(asd[0]); GZInfo[i][gCoords][1] = floatstr(asd[1]); GZInfo[i][gCoords][2] = floatstr(asd[2]); GZInfo[i][gCoords][3] = floatstr(asd[3]); } GZInfo[i][gFrakVlad] = strval(asd[4]); if(GZInfo[i][gFrakVlad] == 0) GZInfo[i][gFrakVlad] = allowedfactions[random(sizeof(allowedfactions))]; GZInfo[i][gID] = GangZoneCreate(GZInfo[i][gCoords][0],GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]); ZoneOnBattle[i] =0; GZSafeTime[i] =0; } iniClose(File); print("Система гангзон успешно загружена!"); } public SaveGZ() { new string[256]; new File = iniOpen("GangWar's/GangZones.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[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3],GZInfo[i][gFrakVlad]); iniSet(File,l,string); } iniClose(File); } public GzCheck() { new string[256]; for(new i =0;i<sizeof(GZInfo);i++) { if(ZoneOnBattle[i] == 1 && GZSafeTime[i] == 0) { ZoneTimer[i] -=10; if(ZoneTimer[i] <=0) { SendClientMessageToAll(-1,"Наблюдатель: Время на захват зоны вышел. Ничья."); ZoneOnBattle[i] =0; GangZoneStopFlashForAll(GZInfo[i][gID]); SaveGZ(); SaveZones(); } for(new x =0;x<MAX_PLAYERS;x++) { if(PlayerToKvadrat(x,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3])&&IsInAllowed(x)) { new faction; if(PlayerInfo[x][pLeader] !=0) {faction = PlayerInfo[x][pLeader];} else { faction = PlayerInfo[x][pMember];} OnZONE[i][faction] ++; } } new asd; for(new x =0;x<20;x++) { if(OnZONE[i][x] > 0 && IsInAllowedF(x)) asd ++; } if(asd == 1) { for(new x =0;x<20;x++) { if(OnZONE[i][x] > 0) { new zx,zl; zx = x; zl = i; if(GZInfo[i][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)); SaveGZ(); SaveZones(); break; } } } } } for(new i =0;i<49;i++) { for(new z = 0;z<20;z++) { OnZONE[i][z] =0; } } } public LoadZones() { new arrCoords[2][512]; new strFromFile2[512]; new File: file = fopen("ZonesTrigga.ini", io_read); if (file) { new idx; while (idx < 5) { fread(file, strFromFile2); split(strFromFile2, arrCoords, '|'); gangzone[idx][mainzones] = strval(arrCoords[0]); gangzone[idx][mainzones2] = strval(arrCoords[1]); printf("ZONE %d ",gangzone[idx][mainzones]); idx++; } fclose(file); } return 1; } public SaveZones() { new idx; new File: file2; while (idx < 5) { new coordsstring[512]; format(coordsstring, sizeof(coordsstring), "%d|%d\n", gangzone[idx][mainzones], gangzone[idx][mainzones2] ); if(idx == 0) { file2 = fopen("GangWar's/Zones.ini", io_write); } else { file2 = fopen("GangWar's/Zones.ini", io_append); } fwrite(file2, coordsstring); idx++; fclose(file2); } return 1; } 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; }
В public OnPlayerConnect(playerid): Code
for(new i =0;i<49;i++) { GangZoneShowForPlayer(playerid,GZInfo[i][gID],GetGangZoneColor(i)); }
В public OnGameModeInit: Code
SetTimer("GzCheck",10000,1); SetTimer("SaveGZ",100000,1); LoadGZ(); LoadZones();
Далее в public SaveAccounts(): Автор - Dimka_71rus Дата добавления - 28.12.2011 в 11:42:52
Dimka_71rus Дата: Среда, 28.12.2011, 11:43:01 | Сообщение # 2
Группа: Пользователи
Сообщений: 360
Теперь команды, в public OnPlayerCommandText(playerid, cmdtext[]): Code
new faction=0; if(!strcmp(cmd,"/gzcolor",true)) { tmp = strtok(cmdtext,idx); new l = strval(tmp); if(!IsInAllowedF(l)) return SendClientMessage(playerid,COLOR_GREY,"Неверный ID банды!"); if(PlayerInfo[playerid][pAdmin] >= 6) { for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3])) { GZInfo[i][gFrakVlad] = l; GangZoneStopFlashForAll(GZInfo[i][gID]); GangZoneHideForAll(GZInfo[i][gID]); GangZoneShowForAll(GZInfo[i][gID],GetGangZoneColor(i)); SaveGZ(); return 1; } } } } if(!strcmp(cmd,"/attack",true)) { if(FrakCD[faction] == 0) { if(!IsInAllowed(playerid)) { return SendClientMessage(playerid,COLOR_GREY,"Ваша банда не может учавствовать в захвате зон или вы не на 1 зоне"); } for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != faction && ZoneOnBattle[i] == 0) { if(GZInfo[i][gFrakVlad] == GetPlayerFaction(playerid)) { SendClientMessage(playerid, COLOR_GRAD4, "Вы не можете напасть на свою территорию"); return 1; } if(!IsPlayerInBandOnline(GZInfo[i][gFrakVlad])) return SendClientMessage(playerid,COLOR_LIGHTRED,"Зону банды которую вы хотите атаковать нет в онлайне!"); if(PlayerInfo[playerid][pRank] < 3) return SendClientMessage(playerid,COLOR_LIGHTRED,"Иницировать захват можно только с 3 ранга и выше!"); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,"Ваша Зона под атакой. У вас 2 минуты чтобы подготовится к защите зоны."); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,"Если через 2 минуты на зоне никого не будет то зона автоматически перейдет к врагу"); format(string,sizeof(string),"%s начал борьбу за зону против %s банды. У вас 2 минуты чтобы подготовится к атаке",Name(playerid),GetGangName(GZInfo[i][gFrakVlad])); SendFamilyMessage(faction,COLOR_LIGHTRED,string); GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(faction)); GZSafeTime[i] = 120; FrakCD[faction] = 3000; GZInfo[i][gNapad] = faction; ZoneTimer[i] = 720; ZoneOnBattle[i] = 1; break; } } } else { return SendClientMessage(playerid,COLOR_GREY,"Ваша банда еще не окрепла с момента последнего захвата. Ждите!"); } }
И В public SetPlayerUnjail(): Code
for(new i =0;i<49;i++) { if(GZSafeTime[i]>0) { GZSafeTime[i] --; if(GZSafeTime[i] == 60 || GZSafeTime[i] == 120) { format(string,sizeof(string),"У вас осталось %d секунд на подготовку",GZSafeTime[i]); SendFamilyMessage(GZInfo[i][gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,string); } if(GZSafeTime[i]==0) { format(string,sizeof(string),"Время на подготовку вышло. Если у вас нет ни одного солдата на поле боя то зона автоматически переходит к противнику"); SendFamilyMessage(GZInfo[i][gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,string); } } } for(new i =0;i<sizeof(FrakCD);i++) { if(FrakCD[i] >0) { FrakCD[i] --; if(FrakCD[i] == 0) SendFamilyMessage(i,COLOR_LIGHTRED,"Ваша банда снова может учавствовать в захвате зон"); } }
Ко всем new: Code
new gangzone[5][1]; new mainzones; new mainzones2;
Чтобы работали гангзоны у вас должен быть подключен инклуд mxINI : Гангзону нельзя захватить если игрок(и) этой банды не онлайн Чтобы захватить гангзону введите /attack ждете 2 минуты (на подготовку) и стреляетесь, если вы всех убили и их на ГангЗоне нету то территория будет принадлежать вам. + чтобы инициировать войну, надо чтобы член банды др. фракции присутствовал на зоне. Автор: GamETakE
Лучшие моды,скрипты,карты - вы найдёте на сайте samp-pawno.ru Самые чёткие ответы на ваши вопросы и помощь по скритингу вы найдёте на сайте forum-pawno.ru
Сообщение отредактировал Dimka_71rus - Среда, 28.12.2011, 11:43:50
Сообщение Теперь команды, в public OnPlayerCommandText(playerid, cmdtext[]): Code
new faction=0; if(!strcmp(cmd,"/gzcolor",true)) { tmp = strtok(cmdtext,idx); new l = strval(tmp); if(!IsInAllowedF(l)) return SendClientMessage(playerid,COLOR_GREY,"Неверный ID банды!"); if(PlayerInfo[playerid][pAdmin] >= 6) { for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3])) { GZInfo[i][gFrakVlad] = l; GangZoneStopFlashForAll(GZInfo[i][gID]); GangZoneHideForAll(GZInfo[i][gID]); GangZoneShowForAll(GZInfo[i][gID],GetGangZoneColor(i)); SaveGZ(); return 1; } } } } if(!strcmp(cmd,"/attack",true)) { if(FrakCD[faction] == 0) { if(!IsInAllowed(playerid)) { return SendClientMessage(playerid,COLOR_GREY,"Ваша банда не может учавствовать в захвате зон или вы не на 1 зоне"); } for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != faction && ZoneOnBattle[i] == 0) { if(GZInfo[i][gFrakVlad] == GetPlayerFaction(playerid)) { SendClientMessage(playerid, COLOR_GRAD4, "Вы не можете напасть на свою территорию"); return 1; } if(!IsPlayerInBandOnline(GZInfo[i][gFrakVlad])) return SendClientMessage(playerid,COLOR_LIGHTRED,"Зону банды которую вы хотите атаковать нет в онлайне!"); if(PlayerInfo[playerid][pRank] < 3) return SendClientMessage(playerid,COLOR_LIGHTRED,"Иницировать захват можно только с 3 ранга и выше!"); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,"Ваша Зона под атакой. У вас 2 минуты чтобы подготовится к защите зоны."); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,"Если через 2 минуты на зоне никого не будет то зона автоматически перейдет к врагу"); format(string,sizeof(string),"%s начал борьбу за зону против %s банды. У вас 2 минуты чтобы подготовится к атаке",Name(playerid),GetGangName(GZInfo[i][gFrakVlad])); SendFamilyMessage(faction,COLOR_LIGHTRED,string); GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(faction)); GZSafeTime[i] = 120; FrakCD[faction] = 3000; GZInfo[i][gNapad] = faction; ZoneTimer[i] = 720; ZoneOnBattle[i] = 1; break; } } } else { return SendClientMessage(playerid,COLOR_GREY,"Ваша банда еще не окрепла с момента последнего захвата. Ждите!"); } }
И В public SetPlayerUnjail(): Code
for(new i =0;i<49;i++) { if(GZSafeTime[i]>0) { GZSafeTime[i] --; if(GZSafeTime[i] == 60 || GZSafeTime[i] == 120) { format(string,sizeof(string),"У вас осталось %d секунд на подготовку",GZSafeTime[i]); SendFamilyMessage(GZInfo[i][gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,string); } if(GZSafeTime[i]==0) { format(string,sizeof(string),"Время на подготовку вышло. Если у вас нет ни одного солдата на поле боя то зона автоматически переходит к противнику"); SendFamilyMessage(GZInfo[i][gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,string); } } } for(new i =0;i<sizeof(FrakCD);i++) { if(FrakCD[i] >0) { FrakCD[i] --; if(FrakCD[i] == 0) SendFamilyMessage(i,COLOR_LIGHTRED,"Ваша банда снова может учавствовать в захвате зон"); } }
Ко всем new: Code
new gangzone[5][1]; new mainzones; new mainzones2;
Чтобы работали гангзоны у вас должен быть подключен инклуд mxINI : Гангзону нельзя захватить если игрок(и) этой банды не онлайн Чтобы захватить гангзону введите /attack ждете 2 минуты (на подготовку) и стреляетесь, если вы всех убили и их на ГангЗоне нету то территория будет принадлежать вам. + чтобы инициировать войну, надо чтобы член банды др. фракции присутствовал на зоне. Автор: GamETakE Автор - Dimka_71rus Дата добавления - 28.12.2011 в 11:43:01
Leon_Colors Дата: Вторник, 26.08.2014, 18:53:48 | Сообщение # 3
Группа: Пользователи
Сообщений: 3
отличный урок как неделать /capture без обид
Сообщение отличный урок как неделать /capture без обид Автор - Leon_Colors Дата добавления - 26.08.2014 в 18:53:48
Загрузка страницы, займет меньше минуты...
Статистика Форума
Последнии темы
Читаемые темы
Лучшие пользователи
Новые пользователи