Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Сис-ма /capture (Advance Rp)

Статус
В этой теме нельзя размещать новые ответы.

HardyCaps

Умник
Я нашёл сис-му капта на другом портале(нубо.Ru)Не реклама!
Автор: 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 
};
К "forward"
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); 
}
В public OnGameModeInit()
PHP:
LoadGZ();
В public OnGameModeExit()
PHP:
for(new i = 1; i <= TOTALGZ; i++) 
    { 
        SaveGZ(i); 
    }
В public OnPlayerConnect(playerid)
PHP:
for(new g = 1; g <= TOTALGZ; g++) 
    { 
        SetGZToColor(gz[g], g, playerid); 
    }
В public OnPlayerDeath(playerid, killerid, reason)
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; 
}
У кого нету SendMes
В начало мода
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); 
}
Скачать таблицу gangzones:
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу