• Страница 1 из 1
  • 1
Модератор форума: [east_side]_trane, drifter-dron, valych, admin  
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():
Code
SaveGZ();


Лучшие моды,скрипты,карты - вы найдёте на сайте 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():
Code
SaveGZ();

Автор - 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:
Quote
#include <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:
Quote
#include <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
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
21:25:24
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2025

vkontakte :samp-pawno.ru: