Дмитрий |
Дата: Среда, 30.07.2014, 20:08 | Сообщение # 1 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
| Автор: Osetin Ко всем "New" Код 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];
Код 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 };
К "forward" Код forward GangZoneWar(gzone, gang);
Создаём новый паблик Код 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); }
Ко всем пабликам или в конец мода Код 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); }
В public OnGameModeInit()
В public OnGameModeExit() Код for(new i = 1; i <= TOTALGZ; i++) { SaveGZ(i); }
В public OnPlayerConnect(playerid) Код for(new g = 1; g <= TOTALGZ; g++) { SetGZToColor(gz[g], g, playerid); }
В public OnPlayerDeath(playerid, killerid, reason) Код 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); } } } }
К любому таймеру Код for(new i = 0; i < TOTALFRAC; i++) { if(unWar [i]== 1) { unWar [i]= 0; SendTeamMessage(i, COLOR_LIGHTGREEN, "Ваша банда снова может участвовать в захвате районов"); } }
From Russia With Love!
|
|
|
|
Дмитрий |
Дата: Среда, 30.07.2014, 20:08 | Сообщение # 2 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
|
Сама кмд Код 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; }
У кого нету SendMes В начало мода Код #define BYTES_PER_CELL (cellbits / 8)
Куда угодно Код 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); }
Скачать таблицу gangzones: http://gigabytes.clan.su/forums-load/pawno/gangzone.sql
From Russia With Love!
|
|
|
|