GangZones
#1

PHP Code:
public LoadGangZones()
{
    new 
rowsfieldsid 1time GetTickCount();
    
cache_get_data(rowsfields);
    for(new 
1rowsi++)
    {
        if(
rows)
        {
            
GZInfo[id][gID] = cache_get_field_content_int(i"id"DATABASE);
            
GZInfo[id][gCoords][0] = cache_get_field_content_float(i"ginfo1"DATABASE);
            
GZInfo[id][gCoords][1] = cache_get_field_content_float(i"ginfo2"DATABASE);
            
GZInfo[id][gCoords][2] = cache_get_field_content_float(i"ginfo3"DATABASE);
            
GZInfo[id][gCoords][3] = cache_get_field_content_float(i"ginfo4"DATABASE);
            
GZInfo[id][gDefenders] = cache_get_field_content_int(i"fraction"DATABASE);
            
GZInfo[id][gID] = GangZoneCreate(GZInfo[id][gCoords][0], GZInfo[id][gCoords][1], GZInfo[id][gCoords][2], GZInfo[id][gCoords][3]);
            
ZoneOnBattle[id] = false;
            
GZInfo[id][gPlayerAttacker] = 0;
            
GZInfo[id][gPlayerDefender] = 0;
            
GZInfo[id][gAttackers] = 0;
            
GZSafeTime[id] = 0;
            
TOTALGZ++, id++;
        }
        else 
printf("[Ошибка MySQL] Номер гангзоны %i"i);
    }
    
printf("[Загружено ганг зон]: <%i>. Потрачено: <%i мс>."TOTALGZGetTickCount() - time);
    return 
true;

Пишет что загружены все гангзоны но некоторые не отоброжаются
Reply
#2

Что возвращает GangZoneCreate для не отображающихся?
Как проиходит отображение ГЗ?
Не перепутаны ли минимумы и максимумы в GangZoneCreate ?
Какие цвета не отображающихся ГЗ выставляются?
Reply
#3

Зачем создавать переменную id, если есть i?
Как показываете гангзоны?
Reply
#4

Все отображение пофиксил, появилась другая проблема.. Не мигает зона хотя
PHP Code:
GangZoneFlashForAll(GZInfo[i][gID], COLOR_RED); 
стоит.
Reply
#5

Quote:
Originally Posted by SanDev
View Post
Все отображение пофиксил, появилась другая проблема.. Не мигает зона хотя
PHP Code:
GangZoneFlashForAll(GZInfo[i][gID], COLOR_RED); 
стоит.
её еще показать нужно сначала GangZoneShowForAll
Reply
#6

Не помогло
Reply
#7

Вы используете функцию GangZoneFlashForAll, не находясь в это время на сервере, а лишь потом заходите для теста? Если да, то насколько я помню, она включает мигание зоны только для тех игроков, что на момент ее использования находятся на сервере. Если кто-то еще зайдет, то ему персонально нужно включать мигание.
Reply
#8

Quote:
Originally Posted by stabker
View Post
Вы используете функцию GangZoneFlashForAll, не находясь в это время на сервере, а лишь потом заходите для теста? Если да, то насколько я помню, она включает мигание зоны только для тех игроков, что на момент ее использования находятся на сервере. Если кто-то еще зайдет, то ему персонально нужно включать мигание.
Для игроков которые находятся на сервере, вот им не врубает
Reply
#9

Покажите весь код, где она должна начать мигать
Reply
#10

PHP Code:
CMD:capture(playeridparams[])
{
    if(!
IsAGang(playerid)) return true;
    if(
GetPVarInt(playerid"AntiFlood") > gettime()) return SendClientMessage(playeridCOLOR_GREY"Подождите немного!");
    
SetPVarInt(playerid"AntiFlood"gettime() + 1);
    if(
sscanf(params,"d"params[0]))
    {
        
SendClientMessage(playeridCOLOR_WHITE"Введите: /capture [1 или 2]");
        
SendClientMessage(playeridCOLOR_WHITE"Вариант: 1 - Выйграет банда которая наберет больше убийств во время войны за территорию.");
        
SendClientMessage(playeridCOLOR_WHITE"Вариант: 2 - Выйграет банда которая к концу войны останется на территории убив всех противников.");
        return 
true;
    }
    if(
params[0] < || params[0] > 2)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Введите: /capture [1 или 2]");
        
SendClientMessage(playeridCOLOR_WHITE"Вариант: 1 - Выйграет банда которая наберет больше убийств во время войны за территорию.");
        
SendClientMessage(playeridCOLOR_WHITE"Вариант: 2 - Выйграет банда которая к концу войны останется на территории убив всех противников.");
        return 
true;
    }
    new 
newhournewminutenewsecond;
    
gettime(newhournewminutenewsecond);
    
//if(newhour < 10 || newhour > 23) return SendClientMessage(playerid, COLOR_WHITE, "Ошибка: Каптить можно только с 10 до 23 часов");
    
if(PI[playerid][Rank] < Fraction[PI[playerid][Member]][fRankMax] - 3) return SendClientMessage(playeridCOLOR_WHITENotDostup);
    for(new 
1<= TOTALGZi++)
    {
        if(
PlayerToKvadrat(playeridGZInfo[i][gCoords][0], GZInfo[i][gCoords][1], GZInfo[i][gCoords][2], GZInfo[i][gCoords][3]))
        {
            
// Проверки на атаку
            
if(capturetime gettime()) return SendClientMessage(playeridCOLOR_WHITE"Ошибка: Ваша банда уже воевала за территорию.");
            if(
GZInfo[i][gDefenders] == PI[playerid][Member]) return SendClientMessage(playeridCOLOR_WHITE"Ошибка: Данная территория принадлежит вашей банде");
            if(
IsARespawn(playerid)) return SendClientMessage(playeridCOLOR_WHITE"Ошибка: Нельзя завоевать эту территорию");
            if(
== || == || == 86 || == 96 || == 45 || == 46 || == 114 || == 115) return SendClientMessage(playeridCOLOR_WHITE"Ошибка: Нельзя завоевать эту территорию");
            if(
ZoneOnBattle[i] == true) return SendClientMessage(playeridCOLOR_WHITE"Ошибка: Данная территория под атакой другой банды");
            if(
ItsWar[PI[playerid][Member] - 14] == true) return SendClientMessage(playeridCOLOR_WHITE"Ошибка: Войну за территорию можно проводить один раз в час!");
            if(
ItsWar[GZInfo[i][gDefenders] - 14] == true) return SendClientMessage(playeridCOLOR_WHITE,"Ошибка: Данная банда воюет / воевала!");
            
//
            
GZInfo[i][gArea] = CreateDynamicRectangle(GZInfo[i][gCoords][0], GZInfo[i][gCoords][1], GZInfo[i][gCoords][2], GZInfo[i][gCoords][3]);
            
GangZoneFlashForAll(GZInfo[i][gID], COLOR_RED);
            
ZoneOnBattle[i] = true;
            
GZInfo[i][gType] = params[0];
            
GZSafeTime[i] = 600;
            
GZInfo[i][gAttackers] = PI[playerid][Member];
            
GZInfo[i][gPlayerAttacker] = 0;
            
GZInfo[i][gPlayerDefender] = 0;
            
GZInfo[i][gKillAttacker] = 0;
            
GZInfo[i][gKillDefender] = 0;
            
ItsWar[GZInfo[i][gAttackers] - 14] = true;
            
ItsWar[GZInfo[i][gDefenders] - 14] = true;
            
//
               
format(PI[playerid][CMDstr], 128"[Внимание]: На вашу территорию напала группировка %s, у вас есть 2 минуты, чтобы подготовиться"gFractionName[PI[playerid][Member]]);
            
SendFrac(GZInfo[i][gDefenders], COLOR_LIGHTREDPI[playerid][CMDstr]);
            
//
            
format(PI[playerid][CMDstr], 128"[Внимание]: Ваша банда напала на территорию группировки %s, у вас есть 2 минуты, чтобы подготовиться"gFractionName[GZInfo[i][gDefenders]]);
            
SendFrac(PI[playerid][Member], 0x00A86BFFPI[playerid][CMDstr]);
            
format(PI[playerid][CMDstr], 60"Атаку произвел(а) %s[%d]"PI[playerid][Name], playerid);
            
SendFrac(PI[playerid][Member], COLOR_WHITEPI[playerid][CMDstr]);
            
//
            
format(PI[playerid][CMDstr], 128"[A] CAPTURE. [TYPE: %d] Банда %s напала на территорию банды %s"params[0], gFractionName[PI[playerid][Member]], gFractionName[GZInfo[i][gDefenders]]);
            
SCMA(PI[playerid][CMDstr], COLOR_YELLOW);
               
//
            
new str[128];
            if(
params[0] == 1format(strsizeof(str), "~g~TIME: ~w~%s~n~~n~%s: ~g~%d~n~~w~%s: ~g~%d~n~~n~~w~TYPE CAPTURE: ~g~1"convert(GZSafeTime[i]), gFractionName[GZInfo[i][gAttackers]], GZInfo[i][gPlayerAttacker], gFractionName[GZInfo[i][gDefenders]], GZInfo[i][gDefenders]);
            else 
format(strsizeof(str), "~g~TIME: ~w~%s~n~~n~%s: ~g~%d ~w~KILLS: ~r~%d~n~~w~%s: ~g~%d ~w~KILLS: ~r~%d~n~~n~~w~TYPE CAPTURE: ~g~2"convert(GZSafeTime[i]), gFractionName[GZInfo[i][gAttackers]], GZInfo[i][gPlayerAttacker], GZInfo[i][gKillAttacker], gFractionName[GZInfo[i][gDefenders]], GZInfo[i][gDefenders], GZInfo[i][gKillDefender]);
            
//
            
PlayerForeach(x)
            {
                   if(!
PI[playerid][Login]) continue;
                   if(
GZInfo[i][gAttackers] != PI[x][Member] && GZInfo[i][gDefenders] != PI[x][Member]) continue;
                   
PlayerTextDrawSetString(xGangWar[x], str);
                
PlayerTextDrawShow(xGangWar[x]);
               }
               break;
          }
       }
       return 
true;

Reply
#11

Помогите братцы не знаю в чем дело
Reply
#12

Quote:
Originally Posted by SanDev
View Post
Помогите братцы не знаю в чем дело
А часть кода когда игрок подключается к серверу?
Reply
#13

Quote:
Originally Posted by Stepashka
View Post
А часть кода когда игрок подключается к серверу?
PHP Code:
public OnPlayerConnect(playerid)
{
    new 
string[10];
    if(
GetPlayerVersion(playeridstringsizeof(string)))
    {
        if(
strfind(stringCLIENT_VERSIONtrue) == -1)
        {
            
// Если игрок подключается с не валидным Клиентом не соответсвующий с CLIENT_VERSION.
            
new str[70];
            
format(strsizeof(str), "Клиент: {b9c7be}%s | {aac5e3}Требуется: {b9c7be}"CLIENT_VERSION""string);
            
SendClientMessage(playeridCOLOR_LIGHTREDstr);
            
SendClientMessage(playeridCOLOR_LIGHTRED"[!] Ваш клиент устарел, новую версию можно скачать на сайте {b9c7be}rp-skrilax.su");
            
KickD(playerid"");
            return 
true;
        }
        else
        {
            
PI[playerid][AntiAttack]++;
            if(
PI[playerid][AntiAttack] > 1)
            {
                
PI[playerid][AntiAttack] = 0;
                
CheatKick(playerid21);
                return 
false;
            }
            
//
            
SetPVarInt(playerid"AntiBreik"gettime() + 500);
            
SetPVarInt(playerid"GunCheck"gettime() + 500);
            
GetPlayerName(playeridPI[playerid][Name], MAX_PLAYER_NAME);
            
SetPlayerColor(playerid0xFFFFFF00);
               
SetPVarInt(playerid"player_kick_time"GetTickCount() + 15000);
            
Reset(playerid);
            
p_ac{playerid} = 0;
            if(
STimer[playerid] != -1KillTimer(STimer[playerid]), STimer[playerid] = -1;
            if(
tChainSaw[playerid] != -1KillTimer(tChainSaw[playerid]), tChainSaw[playerid] = -1;
            
//
            
RemoveBuildingForPlayer(playerid1411347.19531799.265618.75780.25);
            
RemoveBuildingForPlayer(playerid1411342.93751796.289118.75780.25);
            
RemoveBuildingForPlayer(playerid968, -2436.8125495.468829.67970.25);
            
format(WantNickChange[playerid], MAX_PLAYER_NAME"");
            
ResetPlayerWeapons(playerid);
            
CreateEatTextDraw(playerid);
            for(new 
046i++) Weapons[playerid][i] = 0;
            for(new 
i11i++) GiveGuns[i][playerid] = 0;
            for(new 
1<= TOTALGZi++)
            {
                
GangZoneShowForPlayer(playeridGZInfo[i][gID], GetGangZoneColor(i));
            }
            
GangZoneShowForPlayer(playeridGangZoneBizzWar[0], 0x0bda51FF);
            
GangZoneShowForPlayer(playeridGangZoneBizzWar[1], 0x0bda51FF);
            
GangZoneShowForPlayer(playeridGangZoneBizzWar[2], 0x0bda51FF);
            
//return true;
        
}
    }
    else
    {
        
Kick(playerid);
        return 
false;
    }
    return 
true;

Reply
#14

Очень смущает что вы записываете ID зоны в переменную gArea
Code:
GZInfo[i][gArea] = CreateDynamicRectangle(GZInfo[i][gCoords][0], GZInfo[i][gCoords][1], GZInfo[i][gCoords][2], GZInfo[i][gCoords][3]);
А по коду далее везде обращаетесь к gID:
Code:
GangZoneFlashForAll(GZInfo[i][gID], COLOR_RED);
...
GangZoneShowForPlayer(playerid, GZInfo[i][gID], GetGangZoneColor(i));
Может для начала определиться с переменной?

И почему вы не вызываете мигание зоны для вновь подключившегося игрока?
Reply
#15

Степашка, он записывает в gArea не саму ганг-зону, а стримерскую зону, присмотрись.

PHP Code:
GZInfo[i][gArea] = CreateDynamicRectangle(GZInfo[i][gCoords][0], GZInfo[i][gCoords][1], GZInfo[i][gCoords][2], GZInfo[i][gCoords][3]);
...
GZInfo[id][gID] = GangZoneCreate(GZInfo[id][gCoords][0], GZInfo[id][gCoords][1], GZInfo[id][gCoords][2], GZInfo[id][gCoords][3]); 
Reply
#16

Quote:
Originally Posted by joker2020pro
View Post
Степашка, он записывает в gArea не саму ганг-зону, а стримерскую зону, присмотрись.

PHP Code:
GZInfo[i][gArea] = CreateDynamicRectangle(GZInfo[i][gCoords][0], GZInfo[i][gCoords][1], GZInfo[i][gCoords][2], GZInfo[i][gCoords][3]);
...
GZInfo[id][gID] = GangZoneCreate(GZInfo[id][gCoords][0], GZInfo[id][gCoords][1], GZInfo[id][gCoords][2], GZInfo[id][gCoords][3]); 
Пропустил код выше, вопрос снят)
Reply
#17

Quote:
Originally Posted by Stepashka
View Post
Очень смущает что вы записываете ID зоны в переменную gArea
Code:
GZInfo[i][gArea] = CreateDynamicRectangle(GZInfo[i][gCoords][0], GZInfo[i][gCoords][1], GZInfo[i][gCoords][2], GZInfo[i][gCoords][3]);
А по коду далее везде обращаетесь к gID:
Code:
GangZoneFlashForAll(GZInfo[i][gID], COLOR_RED);
...
GangZoneShowForPlayer(playerid, GZInfo[i][gID], GetGangZoneColor(i));
Может для начала определиться с переменной?

И почему вы не вызываете мигание зоны для вновь подключившегося игрока?
Это должно помочь?
Reply
#18

ну вместо того, чтобы задавать такие вопросы и ждать, пока на них ответят, можно было бы уже самому проверить
Reply
#19

Ура, спасибо Степашка работает мигалка уеуееху!
PHP Code:
for(new 1<= TOTALGZi++)
            {
                
GangZoneShowForPlayer(playeridGZInfo[i][gID], GetGangZoneColor(i));
                if(
ItsWar[PI[playerid][Member] - 14] == true)
                {
                    
GangZoneFlashForAll(GZInfo[i][gID], COLOR_RED);
                    new 
str[128];
                    if(
GZInfo[i][gType] == 1format(strsizeof(str), "~g~TIME: ~w~%s~n~~n~%s: ~g~%d~n~~w~%s: ~g~%d~n~~n~~w~TYPE CAPTURE: ~g~1"convert(GZSafeTime[i]), gFractionName[GZInfo[i][gAttackers]], GZInfo[i][gPlayerAttacker], gFractionName[GZInfo[i][gDefenders]], GZInfo[i][gDefenders]);
                    else 
format(strsizeof(str), "~g~TIME: ~w~%s~n~~n~%s: ~g~%d ~w~KILLS: ~r~%d~n~~w~%s: ~g~%d ~w~KILLS: ~r~%d~n~~n~~w~TYPE CAPTURE: ~g~2"convert(GZSafeTime[i]), gFractionName[GZInfo[i][gAttackers]], GZInfo[i][gPlayerAttacker], GZInfo[i][gKillAttacker], gFractionName[GZInfo[i][gDefenders]], GZInfo[i][gDefenders], GZInfo[i][gKillDefender]);
                    if(!
PI[playerid][Login]) continue;
                      
PlayerTextDrawSetString(playeridGangWar[playerid], str);
                    
PlayerTextDrawShow(playeridGangWar[playerid]);
                }
            } 
Добавил и все окееей
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)