_Denis_
Умник
Незнаю... думаю есть возможно такой урок, но я всеравно выложу, т.к различие может в чем то будет.
И так приступим...
1. Добавим ко всем #define
2. Ко всем new
3. Добавляем в паблик public OnPlayerDeath(playerid, killerid, reason)
4. Добавьте в паблик public OnPlayerDisconnect(playerid, reason)
5. В паблик public OnPlayerSpawn(playerid) >
6. в паблик OnGameModeInit()
7. В конец мода:
Добавить файл в scriptfiles:
Сыллка которая поможет вам с ганг зонами: Ссылка:
И так приступим...
1. Добавим ко всем #define
PHP:
// GZ
#define MAX_GANGZONES 48
#define REOWN_TURF 4
#define GANGAREA_WARNINGS 2
#define GANGAREA_TAKE 4
PHP:
// GZ
new Float:GangZones[MAX_GANGZONES][4]={
{2787.367675, -1063.354492, 2995.367675, -895.354431},
{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},
{1738.947509, -2163.916503, 1948.676025, -2005.773437},
{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}
};
new GZColor[4]={0xFF00FFAA,0xB8860BAA,0x36D352AA,0x00FDFDAA};// Цвета банд
new gangzone[MAX_GANGZONES][1];
new gzc[sizeof(GangZones)];
new gzkillteam2[MAX_PLAYERS];
new gzkillteam[MAX_PLAYERS];
new taimer11;
new taimer22;
new taimer33;
new taimer44;
3. Добавляем в паблик public OnPlayerDeath(playerid, killerid, reason)
PHP:
// GZ
if(PlayerInfo[killerid][pLeader] == 12 || PlayerInfo[killerid][pLeader] == 13 || PlayerInfo[killerid][pLeader] == 15 || PlayerInfo[killerid][pLeader] == 17 || PlayerInfo[killerid][pMember] == 12 || PlayerInfo[killerid][pMember] == 13 || PlayerInfo[killerid][pMember] == 15 || PlayerInfo[killerid][pMember] == 17)
{
if(PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pLeader] == 13 || PlayerInfo[playerid][pLeader] == 15 || PlayerInfo[playerid][pLeader] == 17 || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pMember] == 15 || PlayerInfo[playerid][pMember] == 17)
{
for(new h = 0; h < sizeof(GangZones); h++)
{
if(IsPlayerInArea(killerid, GangZones[h][0], GangZones[h][1], GangZones[h][2], GangZones[h][3]))
{
if(PlayerInfo[killerid][pMember] > 0)
{
taimer33 = PlayerInfo[killerid][pMember];
}
else if(PlayerInfo[killerid][pLeader] > 0)
{
taimer33 = PlayerInfo[killerid][pLeader];
}
if(PlayerInfo[playerid][pMember] > 0)
{
taimer44 = PlayerInfo[playerid][pMember];
}
else if(PlayerInfo[playerid][pLeader] > 0)
{
taimer44 = PlayerInfo[playerid][pLeader];
}
if(taimer33 == 12)
{
gzkillteam2[killerid]++;
if(gzkillteam2[killerid] == REOWN_TURF)
{
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[0]);
gzkillteam2[killerid] = 0;
}
}
if((taimer44 != 12) && (taimer33 == 12) && (killerid != INVALID_PLAYER_ID))
{
gzkillteam[killerid]++;
if(gzkillteam[killerid] == GANGAREA_WARNINGS)
{
if(gangzone[h][taimer11] == 1)
{
return 1;
}
GangZoneFlashForAll(gzc[h],GZColor[0]);
}
if(gzkillteam[killerid] == GANGAREA_TAKE)
{
if(gangzone[h][taimer11] == 1)
{
return 1;
}
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[0]);
gangzone[h][taimer11] = 1;
gangzone[h][taimer22] = 1;
gzkillteam[killerid]=0;
}
}
if(taimer33 == 13)
{
gzkillteam2[killerid]++;
if(gzkillteam2[killerid] == REOWN_TURF)
{
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[1]);
gzkillteam2[killerid] = 0;
}
}
if((taimer44 != 13) && (taimer33 == 13) && (killerid != INVALID_PLAYER_ID))
{
gzkillteam[killerid]++;
if(gzkillteam[killerid] == GANGAREA_WARNINGS)
{
if(gangzone[h][taimer11] == 2)
{
return 1;
}
GangZoneFlashForAll(gzc[h],GZColor[1]);
}
if(gzkillteam[killerid] == GANGAREA_TAKE)
{
if(gangzone[h][taimer11] == 2)
{
return 1;
}
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[1]);
gangzone[h][taimer11] = 2;
gangzone[h][taimer22] = 2;
gzkillteam[killerid]=0;
}
}
if(taimer33 == 15)
{
gzkillteam2[killerid]++;
if(gzkillteam2[killerid] == REOWN_TURF)
{
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[2]);
gzkillteam2[killerid] = 0;
}
}
if((taimer44 != 15) && (taimer33 == 15) && (killerid != INVALID_PLAYER_ID))
{
gzkillteam[killerid]++;
if(gzkillteam[killerid] == GANGAREA_WARNINGS)
{
if(gangzone[h][taimer11] == 3)
{
return 1;
}
GangZoneFlashForAll(gzc[h],GZColor[2]);
}
if(gzkillteam[killerid] == GANGAREA_TAKE)
{
if(gangzone[h][taimer11] == 2)
{
return 1;
}
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[2]);
gangzone[h][taimer11] = 3;
gangzone[h][taimer22] = 3;
gzkillteam[killerid]=0;
}
}
if((taimer44 != 17) && (taimer33 == 17) && (killerid != INVALID_PLAYER_ID))
{
gzkillteam[killerid]++;
if(gzkillteam[killerid] == GANGAREA_WARNINGS)
{
if(gangzone[h][taimer11] == 2)
{
return 1;
}
GangZoneFlashForAll(gzc[h],GZColor[3]);
}
if(gzkillteam[killerid] == GANGAREA_TAKE)
{
if(gangzone[h][taimer11] == 2)
{
return 1;
}
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[3]);
gangzone[h][taimer11] = 3;
gangzone[h][taimer22] = 3;
gzkillteam[killerid]=0;
}
}
if(taimer33 == 17)
{
gzkillteam2[killerid]++;
if(gzkillteam2[killerid] == REOWN_TURF)
{
GangZoneStopFlashForAll(gzc[h]);
GangZoneHideForAll(gzc[h]);
GangZoneShowForAll(gzc[h], GZColor[3]);
gzkillteam2[killerid] = 0;
}
}
GZSave();
}
}
}
}
4. Добавьте в паблик public OnPlayerDisconnect(playerid, reason)
PHP:
GZSave();
PHP:
new gzcolor;
for(new h = 0; h < sizeof(GangZones); h++)
{
if (gangzone[h][taimer11] == 1)
{
gzcolor = GZColor[0];
}
else if(gangzone[h][taimer11] == 2)
{
gzcolor = GZColor[1];
}
else if(gangzone[h][taimer11] == 3)
{
gzcolor = GZColor[2];
}
else if(gangzone[h][taimer11] == 4)
{
gzcolor = GZColor[3];
}
GangZoneShowForPlayer(playerid, gzc[h], gzcolor);
}
PHP:
// GZ
GZLoad();
for(new h = 0; h < sizeof(GangZones); h++)
{
gzc[h] = GangZoneCreate(GangZones[h][0], GangZones[h][1], GangZones[h][2], GangZones[h][3]);
}
PHP:
stock GZLoad()
{
new arrCoords[2][512];
new strFromFile2[512];
new File: file = fopen("gzfile.cfg", io_read);
if (file)
{
new idx;
while (idx < MAX_GANGZONES)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
gangzone[idx][taimer11] = strval(arrCoords[0]);
gangzone[idx][taimer22] = strval(arrCoords[1]);
idx++;
}
fclose(file);
printf("Загруженно гангзон %d",idx);
}
return 1;
}
stock GZSave()
{
new idx;
new File: file2;
while (idx < MAX_GANGZONES)
{
new coordsstring[512];
format(coordsstring, sizeof(coordsstring), "%d,%d\n",
gangzone[idx][taimer11],
gangzone[idx][taimer22]);
if(idx == 0)
{
file2 = fopen("gzfile.cfg", io_write);
}else{
file2 = fopen("gzfile.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}
stock IsPlayerInArea(playerid, Float:min_x, Float:min_y ,Float:max_x, Float:max_y)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) return 1;
return 0;
}
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Автор: Неизвестно.
Помогло? Не забывать клацнуть "Спасибо".
Удачного вам скриптинга.
Помогло? Не забывать клацнуть "Спасибо".
Удачного вам скриптинга.
Сыллка которая поможет вам с ганг зонами: Ссылка:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Последнее редактирование:
