HardyCaps
Умник
Я нашёл сис-му капта на другом портале(нубо.Ru)Не реклама!
Автор: Osetin
Скрин:
К "forward"
Создаём новый паблик
Ко всем пабликам или в конец мода
В public OnGameModeInit()
В public OnGameModeExit()
В public OnPlayerConnect(playerid)
В public OnPlayerDeath(playerid, killerid, reason)
К любому таймеру
Сама кмд
У кого нету SendMes
В начало мода
Куда угодно
Скачать таблицу gangzones:
Автор: Osetin
Скрин:
Ко всем "New"Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
PHP:
new unWar[MAX_FRACTION];
new ooc = 0;
new WarTime[MAX_GZ];
new bool:GZWar[MAX_GZ];
new GZWarer[MAX_GZ];
new wartimer[MAX_GZ];
new GZOwnerDeath[MAX_GZ];
new GZOwnerKill[MAX_GZ];
new Text: onecommand[MAX_GZ];
new Text: twocommand[MAX_GZ];
new Text: kolone[MAX_GZ];
new Text: koltwo[MAX_GZ];
new Text: fon[MAX_GZ];
new Text: gztime[MAX_GZ];
new Text: vremya[MAX_GZ];
PHP:
new GZInfo[MAX_GZ][gInfo];
new TOTALGZ = 0;
new gz[MAX_GZ];
new GZColors[MAX_FRACTION] = {
0x00008065,
0x19197065,
0x7FFF0065,
0xFFA50065,
0xFFC1C165,
0x8B814C65,
0x4876FF65,
0x008B0065,
0xFF00FF65,
0xFFA50065,
0x8B225265,
0x8B000065,
0x5F9EA065
};
PHP:
forward GangZoneWar(gzone, gang);
PHP:
public GangZoneWar(gzone, gang)
{
if(WarTime[gzone] == 1)
{
WarTime[gzone]--;
if(GZOwnerKill[gzone] == GZOwnerDeath[gzone])
{
WarTime[gzone] = 180;
SendTeamMessage(gang, COLOR_LIGHTRED, "У вас осталось 3 минуты для того, что-бы захватить территорию");
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "У вас осталось 3 минуты для того, что-бы отстоять свою территорию");
}
else if(GZOwnerKill[gzone] > GZOwnerDeath[gzone])
{
TextDrawDestroy(fon[gzone]);
TextDrawDestroy(onecommand[gzone]);
TextDrawDestroy(twocommand[gzone]);
TextDrawDestroy(kolone[gzone]);
TextDrawDestroy(koltwo[gzone]);
TextDrawDestroy(gztime[gzone]);
TextDrawDestroy(vremya[gzone]);
GZWar[gzone] = false;
KillTimer(wartimer[gzone]);
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "Ваша банда отстояла свою территорию");
GangZoneStopFlashForAll(gz[gzone]);
SendTeamMessage(gang, COLOR_LIGHTRED, "Ваша банда не смогла завоевать территорию");
}
else
{
TextDrawDestroy(fon[gzone]);
TextDrawDestroy(onecommand[gzone]);
TextDrawDestroy(twocommand[gzone]);
TextDrawDestroy(kolone[gzone]);
TextDrawDestroy(koltwo[gzone]);
TextDrawDestroy(gztime[gzone]);
TextDrawDestroy(vremya[gzone]);
GZWar[gzone] = false;
KillTimer(wartimer[gzone]);
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "Ваша банда не смогла отстоять свою территорию");
GZInfo[gzone][gOwner] = gang;
GangZoneStopFlashForAll(gz[gzone]);
SetGZToColor(gz[gzone], gzone);
SendTeamMessage(gang, COLOR_LIGHTRED, "Ваша банда смогла завоевать территорию");
}
}
else if(WarTime[gzone] < 1)
{
if(GZOwnerKill[gzone] == GZOwnerDeath[gzone])
{
WarTime[gzone] = 180;
SendTeamMessage(gang, COLOR_LIGHTRED, "У вас осталось 3 минуты для того, что-бы захватить территорию");
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "У вас осталось 3 минуты для того, что-бы отстоять свою территорию");
}
else if(GZOwnerKill[gzone] > GZOwnerDeath[gzone])
{
TextDrawDestroy(fon[gzone]);
TextDrawDestroy(onecommand[gzone]);
TextDrawDestroy(twocommand[gzone]);
TextDrawDestroy(kolone[gzone]);
TextDrawDestroy(koltwo[gzone]);
TextDrawDestroy(gztime[gzone]);
TextDrawDestroy(vremya[gzone]);
GZWar[gzone] = false;
KillTimer(wartimer[gzone]);
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "Ваша банда отстояла свою территорию");
GangZoneStopFlashForAll(gz[gzone]);
SendTeamMessage(gang, COLOR_LIGHTRED, "Ваша банда не смогла завоевать территорию");
}
else
{
TextDrawDestroy(fon[gzone]);
TextDrawDestroy(onecommand[gzone]);
TextDrawDestroy(twocommand[gzone]);
TextDrawDestroy(kolone[gzone]);
TextDrawDestroy(koltwo[gzone]);
TextDrawDestroy(gztime[gzone]);
TextDrawDestroy(vremya[gzone]);
GZWar[gzone] = false;
KillTimer(wartimer[gzone]);
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "Ваша банда не смогла отстоять свою территорию");
GZInfo[gzone][gOwner] = gang;
GangZoneStopFlashForAll(gz[gzone]);
SetGZToColor(gz[gzone], gzone);
SendTeamMessage(gang, COLOR_LIGHTRED, "Ваша банда смогла завоевать территорию");
}
}
else
{
WarTime[gzone]--;
if(WarTime[gzone] == 180)
{
SendTeamMessage(gang, COLOR_LIGHTRED, "У вас осталось 3 минуты для того, что-бы захватить территорию");
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "У вас осталось 3 минуты для того, что-бы отстоять свою территорию");
}
else if(WarTime[gzone] == 60)
{
SendTeamMessage(gang, COLOR_LIGHTRED, "У вас осталось 1 минутa для того, что-бы захватить территорию");
SendTeamMessage(GZInfo[gzone][gOwner], COLOR_LIGHTRED, "У вас осталось 1 минутa для того, что-бы отстоять свою территорию");
}
}
new string[5];
format(string, sizeof(string), "%d", WarTime[gzone]);
TextDrawSetString(vremya[gzone], string);
}
PHP:
stock 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;
}
stock GetGZColor(gid)
{
new owner = GZInfo[gid][gOwner];
new color = FracColor[owner];
return color;
}
stock SetGZToColor(gangzone, gid, playerid = INVALID_PLAYER_ID)
{
new owner = GZInfo[gid][gOwner];
if(owner == 255)
{
if(playerid == INVALID_PLAYER_ID)
{
GangZoneShowForAll(gangzone, 0xFFFFFF65);
}
else
{
GangZoneShowForPlayer(playerid, gangzone, 0xFFFFFF65);
}
}
else
{
new color = GZColors[owner];
if(playerid == INVALID_PLAYER_ID)
{
GangZoneShowForAll(gangzone, color);
}
else
{
GangZoneShowForPlayer(playerid, gangzone, color);
}
}
return 1;
}
stock LoadGZ()
{
format(query, sizeof(query), "SELECT * FROM `gangzone`");
CheckMySQL();
mysql_query(query);
mysql_store_result();
new gz_num = mysql_num_rows();
if(gz_num > -1)
{
for(new i = 1; i < gz_num+1; i++)
{
mysql_fetch_row(query);
sscanf(query, "e<p<|>iffffd>", GZInfo[i]);
gz[i] = GangZoneCreate(GZInfo[i][gMinX], GZInfo[i][gMinY], GZInfo[i][gMaxX], GZInfo[i][gMaxY]);
TOTALGZ++;
WarTime[i] = 0;
GZWar[i] = false;
GZWarer[i] = 255;
GZOwnerKill[i] = 0;
GZOwnerDeath[i] = 0;
}
printf(" Gang зон загружено: %d", TOTALGZ);
}
mysql_free_result();
}
stock SaveGZ(gid)
{
format(query, sizeof(query), "UPDATE `gangzone` SET `Owner`=%d WHERE `id`=%d", GZInfo[gid][gOwner], gid);
mysql_query(query);
}
PHP:
LoadGZ();
PHP:
for(new i = 1; i <= TOTALGZ; i++)
{
SaveGZ(i);
}
PHP:
for(new g = 1; g <= TOTALGZ; g++)
{
SetGZToColor(gz[g], g, playerid);
}
PHP:
for(new gzone = 1; gzone <= TOTALGZ; gzone++)
{
if(PlayerToKvadrat(playerid, GZInfo[gzone][gMinX], GZInfo[gzone][gMinY], GZInfo[gzone][gMaxX], GZInfo[gzone][gMaxY]))
{
if(GZWar[gzone] == true)
{
if(PlayerInfo[playerid][pMember] == GZInfo[gzone][gOwner] && PlayerInfo[killerid][pMember] == GZWarer[gzone])
{
GZOwnerDeath[gzone]++;
new string[5];
format(string, sizeof(string), "%d", GZOwnerDeath[gzone]);
TextDrawSetString(koltwo[gzone], string);
}
else if(PlayerInfo[playerid][pMember] == GZWarer[gzone] && PlayerInfo[killerid][pMember] == GZInfo[gzone][gOwner])
{
GZOwnerKill[gzone]++;
new string[5];
format(string, sizeof(string), "%d", GZOwnerKill[gzone]);
TextDrawSetString(kolone[gzone], string);
}
}
}
}
PHP:
for(new i = 0; i < TOTALFRAC; i++)
{
if(unWar[i] == 1)
{
unWar[i] = 0;
SendTeamMessage(i, COLOR_LIGHTGREEN, "Ваша банда снова может участвовать в захвате районов");
}
}
PHP:
CMD:gzcolor(playerid, params[])
{
if(GetPVarInt(playerid, "Logged") == 0) return 1;
if(PlayerInfo[playerid][pAdminLevel] < 4) return 1;
if(sscanf(params, "d", params[0])) return SendMe(playerid, COLOR_WHITE, "Использование: /gzcolor [ID фракции]");
#define id params[0]
if(id < 0 || id > TOTALFRAC) return SendMes(playerid, COLOR_GREY, "ID фракции должен быть от 0 до %d (используйте /gangid для получения ID)", TOTALFRAC);
for(new i = 1; i <= TOTALGZ; i++)
{
if(PlayerToKvadrat(playerid, GZInfo[i][gMinX], GZInfo[i][gMinY], GZInfo[i][gMaxX], GZInfo[i][gMaxY]))
{
GZInfo[i][gOwner] = id;
SetGZToColor(gz[i], i);
SaveGZ(i);
}
}
#undef id
return 1;
}
CMD:capture(playerid, params[])
{
if(GetPVarInt(playerid, "Logged") == 0) return 1;
new member = PlayerInfo[playerid][pMember];
if(member == 255 || Fraction[member][fGang] == 0) return SendMe(playerid, COLOR_GREY, "У вас нет доступа к этой команде");
new second, minute, hour;
gettime(hour, minute, second);
if(hour != 11 && hour != 13 && hour != 15 && hour != 17 && hour != 19 && hour != 21 && minute != 0) return SendMe(playerid, COLOR_WHITE, "Захват территории разрешен только в 11:00, 13:00, 15:00, 17:00, 19:00 и 21:00");
if(PlayerInfo[playerid][pRank] < 7) return SendMe(playerid, COLOR_GREY, "Захват территории разрешен только с 7 ранга");
new gzone = -1;
for(new g = 1; g <= TOTALGZ; g++)
{
if(PlayerToKvadrat(playerid, GZInfo[g][gMinX], GZInfo[g][gMinY], GZInfo[g][gMaxX], GZInfo[g][gMaxY]) && GZInfo[g][gOwner] != member)
{
gzone = g;
}
}
if(gzone == -1) return SendMe(playerid, COLOR_GREY, "Вы должны находится на территории другой банды");
if(GZInfo[gzone][gOwner] == 255) return GZInfo[gzone][gOwner] = member, SetGZToColor(gz[gzone], gzone);
new gangster = 0;
new owner = GZInfo[gzone][gOwner];
if(unWar[owner] == 1) return SendMe(playerid, COLOR_GREY, "Территорию этой банды можно будет захватить только после на следующей PayDay");
if(unWar[member] == 1) return SendMe(playerid, COLOR_GREY, "Ваша банда еще не окрепла. Ждите следующего PayDay'a");
new wared = -1;
for(new i = 1; i <= TOTALGZ; i++)
{
if(GZInfo[i][gOwner] == owner && GZWar[i] == true)
{
wared = 1;
}
}
if(wared == 1) return SendMe(playerid, COLOR_GREY, "Кто-то уже завоевывает территорию данной банды");
for(new p = 0; p < MAX_PLAYERS; p++)
{
if(GetPVarInt(p, "Logged") == 1 && PlayerInfo[p][pMember] == owner) gangster++;
}
if(gangster < 1) return SendMe(playerid, COLOR_GREY, "Членов этой банды слишком мало, вы не можете захватить ее территорию");
WarTime[gzone] = 600;
GZWar[gzone] = true;
GZWarer[gzone] = member;
new string[156];
format(string, sizeof(string), "На вашу территорию напала банда %s. У вас есть 10 минут что-бы отстоять ее", Fraction[member][fName]);
SendTeamMessage(owner, COLOR_LIGHTRED, string);
format(string, sizeof(string), "Ваша банда напала на территорию банды %s. У вас есть 10 минут что-бы захватить ее", Fraction[owner][fName]);
SendTeamMessage(member, COLOR_LIGHTRED, string);
GangZoneFlashForAll(gz[gzone], COLOR_RED);
wartimer[gzone] = SetTimerEx("GangZoneWar", 1000, true, "dd", gzone, member);
GZOwnerKill[gzone] = 0;
GZOwnerDeath[gzone] = 0;
fon[gzone] = TextDrawCreate(1, 285, "_");
TextDrawUseBox(fon[gzone], 1);
TextDrawBoxColor(fon[gzone], 0x00000075);
TextDrawTextSize(fon[gzone], 150.0, 400.0);
TextDrawLetterSize(fon[gzone], 0.0, 5.3);
gztime[gzone] = TextDrawCreate(10.0, 285.0, "Time:");
TextDrawLetterSize(gztime[gzone], 0.260000, 1.000000);
TextDrawColor(gztime[gzone], 0x37FA00FF);
TextDrawFont(gztime[gzone], 3);
TextDrawSetProportional(gztime[gzone], 1);
TextDrawSetOutline(gztime[gzone], 2);
vremya[gzone] = TextDrawCreate(50.0, 285.0, "360");
TextDrawLetterSize(vremya[gzone], 0.260000, 1.000000);
TextDrawColor(vremya[gzone], 0x37FA00FF);
TextDrawFont(vremya[gzone], 3);
TextDrawSetOutline(vremya[gzone], 2);
onecommand[gzone] = TextDrawCreate(10.0, 300.0, Fraction[member][fName]);
TextDrawLetterSize(onecommand[gzone], 0.4, 1.2);
TextDrawFont(onecommand[gzone], 2);
TextDrawSetOutline(onecommand[gzone], 2);
TextDrawLetterSize(onecommand[gzone], 0.260000, 1.000000);
twocommand[gzone] = TextDrawCreate(10.0, 315.0, Fraction[owner][fName]);
TextDrawUseBox(twocommand[gzone], 0);
TextDrawFont(twocommand[gzone], 3);
TextDrawSetOutline(twocommand[gzone], 2);
TextDrawLetterSize(twocommand[gzone], 0.260000, 1.000000);
kolone[gzone] = TextDrawCreate(133.0, 315.0, "0");
TextDrawFont(kolone[gzone], 3);
TextDrawSetOutline(kolone[gzone], 2);
TextDrawLetterSize(kolone[gzone], 0.260000, 1.000000);
koltwo[gzone] = TextDrawCreate(133.0, 300.0, "0");
TextDrawLetterSize(koltwo[gzone], 0.260000, 1.000000);
TextDrawFont(koltwo[gzone], 3);
TextDrawSetOutline(koltwo[gzone], 2);
for(new p = 0; p < MAX_PLAYERS; p++)
{
if(GetPVarInt(p, "Logged") == 1)
{
if(PlayerInfo[p][pMember] == owner || PlayerInfo[p][pMember] == member)
{
TextDrawShowForPlayer(p,fon[gzone]);
TextDrawShowForPlayer(p,gztime[gzone]);
TextDrawShowForPlayer(p,vremya[gzone]);
TextDrawShowForPlayer(p,onecommand[gzone]);
TextDrawShowForPlayer(p,twocommand[gzone]);
TextDrawShowForPlayer(p,kolone[gzone]);
TextDrawShowForPlayer(p,koltwo[gzone]);
}
}
}
unWar[owner] = 1;
unWar[member] = 1;
return 1;
}
В начало мода
PHP:
#define BYTES_PER_CELL (cellbits / 8)
PHP:
stock SendMes(playerid, fstring[], {Float, _}:...)
{
static const STATIC_ARGS = 3;
new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
if (n)
{
new message[128], arg_start, arg_end;
#emit CONST.alt fstring
#emit LCTRL 5
#emit ADD
#emit STOR.S.pri arg_start
#emit LOAD.S.alt n
#emit ADD
#emit STOR.S.pri arg_end
do
{
#emit LOAD.I
#emit PUSH.pri
arg_end -= BYTES_PER_CELL;
#emit LOAD.S.pri arg_end
}
while (arg_end > arg_start);
// Push the static format parameters.
#emit PUSH.S fstring
#emit PUSH.C 128
#emit PUSH.ADR message
n += BYTES_PER_CELL * 3;
#emit PUSH.S n
#emit SYSREQ.C format
n += BYTES_PER_CELL;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
return SendClientMessage(playerid, -1, message);
}
else return SendClientMessage(playerid, -1, fstring);
}
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Последнее редактирование модератором:
