44 posts in this topic

не работает оффбан и бан. Хотя бан по ип работает и iban - бан навсегда тоже.

Спойлер

CMD:ban(playerid,params[])
{
    AdminCommand(3);
    new nsa[120];
    if(sscanf(params,"ids[60]",params[0], params[1], params[2])) return SCM(playerid, COLOR_GREY, "Используйте: /ban [id] [дни] [причина]");
    if(params[1] < 1 || params[1] > 30) return SCM(playerid, COLOR_GREY, "Нельзя меньше 1 и больше 30!");
    GetPlayerName(params[0], gp, sizeof(gp));
    new ip[16];
    GetPlayerIp(params[0], ip, sizeof(ip));
    GetPlayerName(playerid, sn, sizeof(sn));
    com
    format(nsa,128,"Администратор %s[%d] заблокировал аккаунт %s на %d дней. Причина: %s",sn, playerid, gp, params[1],params[2]);
    SCMToAll(COLOR_LIGHTRED,nsa);
    new Hour, Minute, Second,Year, Month, Day;
    getdate(Year, Month, Day), gettime(Hour, Minute, Second);
    new slip[16];
    GetPlayerIp(params[0], slip, sizeof(slip));
    format(nsa, sizeof(nsa), "[A] [IP: %s] REG-IP: [%s]",slip, info[params[0]][pRegIP]);
    SCM(playerid, COLOR_LIGHTRED,nsa);
    new unbandate = gettime() + params[2]*86400;
    new data[16];
    format(data, 16, "%02d.%02d.%02d",Day,Month,Year);
    format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUE ('%s', '%s', '%i', '%s')",gp,data,unbandate,params[2]);
    mysql_query(query);
    Kicked(params[0]);
    ainfo[playerid][aBan] ++;
    return 1;
}
CMD:offban(playerid, params[])
{
    AdminCommand(4);
    new nick,result[128],ip[16],data[16];
    if(sscanf(params, "s[32]s[60]", nick,result)) return SCM(playerid, COLOR_GREY, "Èñïîëüçóéòå: /offban [nick_name] [ïðè÷èíà]");
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(!mysql_fetch_row_format(query)) return SCM(playerid, -1, "Äàííûé àêêàóíò íå íàéäåí â áàçå äàííûõ!");
    format(query, sizeof(query), "SELECT * FROM `banlist` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query) == 1) return SCM(playerid, -1, "Äàííûé àêêàóíò óæå íàõîäèòñÿ â áàíëèñòå!");
    GetPlayerName(nick, gp, sizeof(gp));
    GetPlayerIp(nick, ip, sizeof(ip));
    GetPlayerName(playerid, sn, sizeof(sn));
     new nsa[128];
    format(nsa,128,"Àäìèíèñòðàòîð %s[%d] çàáëîêèðîâàë àêêàóíò %s . Ïðè÷èíà: %s",sn, playerid, gp,result);
    SCMToAll(COLOR_LIGHTRED,nsa);
    new Hour, Minute, Second,Year, Month, Day;
    getdate(Year, Month, Day), gettime(Hour, Minute, Second);
    new slip[16];
    GetPlayerIp(playerid, slip, sizeof(slip));
    format(nsa, sizeof(nsa), "[IP: %s]",slip);
    SCM(playerid, COLOR_LIGHTRED,nsa);
    new unbandate = gettime() + 31*86400;
    format(data, 16, "%02d.%02d.%02d",Day,Month,Year);
    format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUE ('%s', '%s', '%i', '%s')",gp,data,unbandate,result);
    mysql_query(query);
    mysql_free_result();
    return 1;
}

 

 

Share this post


Link to post
Share on other sites

Что означает не отображается? При бане игроку не отображается причина, не кикает и т.д, или все это выполняется, или при перезаходе пускает на сервер?

Share this post


Link to post
Share on other sites

при перезаходе пускает на сервер

Share this post


Link to post
Share on other sites
8 минут назад, Pirat сказал:

при перезаходе пускает на сервер

Посмотри mysql_log, может не заносится запись в бд, и скинь проверку на бан.

Share this post


Link to post
Share on other sites

а где проверка на бан?

 

 

mysql log пуст

При оффбане стопается сервер тестил на 2 хостах результат тот же 

Заметка от odosenok , создано

Объединил сообщения.

Share this post


Link to post
Share on other sites
58 минут назад, Pirat сказал:

mysql log пуст

При оффбане стопается сервер тестил на 2 хостах результат тот же 

Проверка на бан должна быть при коннекте игрока, то есть начинай с OnPlayerConnect и иди дальше по функциям, которые в нем вызывается. Чаще всего называется она "OnCheckPlayerBan" и т.д, что-то таком духе. Скинь код оффбана.

Share this post


Link to post
Share on other sites

@Pirat Посмотри в таблице база данных типо такого -  "bans", есть ли там ник игрока которого вы забанили.

Share this post


Link to post
Share on other sites

паблик онплаерконнект
 

Спойлер

public OnPlayerConnect(playerid)
{
    SetPlayerColor(playerid, 0xFFFFFF22);
    if(rej[playerid] > gettime())
    {
        SCM(playerid, -1, "(Слово удалено системой)! "c_red"Неизвестная ошибка");
        Kicked(playerid);
        return 0;
    }
    GetPlayerName(playerid, info[playerid][pName], MAX_PLAYER_NAME);
    Clear(playerid);
    LoadBanList(playerid);
    LoadBanIpList(playerid);
    rej[playerid] = gettime()+2;
    SetPlayerMapIcon(playerid, 12, 2495.3909,-1691.1396,14.7656, 62, 0, MAPICON_LOCAL); //Иконка Grove
    SetPlayerMapIcon(playerid, 13, 2000.0322, -1114.0546, 16.7380, 59, 0, MAPICON_LOCAL); //Иконка Ballas
    SetPlayerMapIcon(playerid, 14, 2801.9202,-1936.3910,13.5469, 61, 0, MAPICON_LOCAL); //Иконка Rifa
    SetPlayerMapIcon(playerid, 15, 2756.3247, -1182.8079, 16.7380, 60, 0, MAPICON_LOCAL); //Иконка Vagos
    SetPlayerMapIcon(playerid, 16, 2185.8733,-1815.2267,13.5469, 58, 0, MAPICON_LOCAL); //Иконка Aztecas
    //-TextDraw-----------------------------------------------------------------
    capt0[playerid] = TextDrawCreate(129.000000, 218.862899, "usebox");
    TextDrawLetterSize(capt0[playerid], 0.000000, 5.925307);
    TextDrawTextSize(capt0[playerid], 13.666652, 0.000000);
    TextDrawAlignment(capt0[playerid], 1);
    TextDrawColor(capt0[playerid], 0);
    TextDrawUseBox(capt0[playerid], true);
    TextDrawBoxColor(capt0[playerid], 102);
    TextDrawSetShadow(capt0[playerid], 0);
    TextDrawSetOutline(capt0[playerid], 0);
    TextDrawFont(capt0[playerid], 0);

    capt1[playerid] = TextDrawCreate(128.666687, 218.863052, "usebox");
    TextDrawLetterSize(capt1[playerid], 0.000000, 1.083744);
    TextDrawTextSize(capt1[playerid], 13.666645, 0.000000);
    TextDrawAlignment(capt1[playerid], 1);
    TextDrawColor(capt1[playerid], 0);
    TextDrawUseBox(capt1[playerid], true);
    TextDrawBoxColor(capt1[playerid], 102);
    TextDrawSetShadow(capt1[playerid], 0);
    TextDrawSetOutline(capt1[playerid], 0);
    TextDrawFont(capt1[playerid], 0);

    capt2[playerid] = TextDrawCreate(16.333328, 230.477691, "usebox");
    TextDrawLetterSize(capt2[playerid], 0.000000, -0.198973);
    TextDrawTextSize(capt2[playerid], 126.333358, 0.000000);
    TextDrawAlignment(capt2[playerid], 1);
    TextDrawColor(capt2[playerid], 0);
    TextDrawUseBox(capt2[playerid], true);
    TextDrawBoxColor(capt2[playerid], -2139094785);
    TextDrawSetShadow(capt2[playerid], 0);
    TextDrawSetOutline(capt2[playerid], 0);
    TextDrawFont(capt2[playerid], 0);

    capt3[playerid] = TextDrawCreate(38.999950, 216.533325, "CAPTURE");
    TextDrawLetterSize(capt3[playerid], 0.350999, 1.301333);
    TextDrawAlignment(capt3[playerid], 1);
    TextDrawColor(capt3[playerid], 512819199);
    TextDrawUseBox(capt3[playerid], true);
    TextDrawBoxColor(capt3[playerid], 0);
    TextDrawSetShadow(capt3[playerid], 0);
    TextDrawSetOutline(capt3[playerid], 1);
    TextDrawBackgroundColor(capt3[playerid], 51);
    TextDrawFont(capt3[playerid], 2);
    TextDrawSetProportional(capt3[playerid], 1);

    capt4[playerid] = TextDrawCreate(16.999986, 229.807449, "CMDONES");
    TextDrawLetterSize(capt4[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt4[playerid], 1);
    TextDrawColor(capt4[playerid], -2139062017);
    TextDrawSetShadow(capt4[playerid], 0);
    TextDrawSetOutline(capt4[playerid], 1);
    TextDrawBackgroundColor(capt4[playerid], 255);
    TextDrawFont(capt4[playerid], 2);
    TextDrawSetProportional(capt4[playerid], 1);

    capt5[playerid] = TextDrawCreate(31.666654, 239.933410, "VS");
    TextDrawLetterSize(capt5[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt5[playerid], 1);
    TextDrawColor(capt5[playerid], -12254977);
    TextDrawSetShadow(capt5[playerid], 0);
    TextDrawSetOutline(capt5[playerid], 1);
    TextDrawBackgroundColor(capt5[playerid], 255);
    TextDrawFont(capt5[playerid], 2);
    TextDrawSetProportional(capt5[playerid], 1);

    capt6[playerid] = TextDrawCreate(16.999984, 249.888885, "CMDONES");
    TextDrawLetterSize(capt6[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt6[playerid], 1);
    TextDrawColor(capt6[playerid], -2139062017);
    TextDrawSetShadow(capt6[playerid], 0);
    TextDrawSetOutline(capt6[playerid], 1);
    TextDrawBackgroundColor(capt6[playerid], 255);
    TextDrawFont(capt6[playerid], 2);
    TextDrawSetProportional(capt6[playerid], 1);

    capt7[playerid] = TextDrawCreate(16.999982, 261.259338, "TIME:");
    TextDrawLetterSize(capt7[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt7[playerid], 1);
    TextDrawColor(capt7[playerid], -1378294017);
    TextDrawSetShadow(capt7[playerid], 0);
    TextDrawSetOutline(capt7[playerid], 1);
    TextDrawBackgroundColor(capt7[playerid], 255);
    TextDrawFont(capt7[playerid], 2);
    TextDrawSetProportional(capt7[playerid], 1);

    capt8[playerid] = TextDrawCreate(103.333290, 229.488952, "0");
    TextDrawLetterSize(capt8[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt8[playerid], 1);
    TextDrawColor(capt8[playerid], -2139062017);
    TextDrawSetShadow(capt8[playerid], 0);
    TextDrawSetOutline(capt8[playerid], 1);
    TextDrawBackgroundColor(capt8[playerid], 255);
    TextDrawFont(capt8[playerid], 2);
    TextDrawSetProportional(capt8[playerid], 1);

    capt9[playerid] = TextDrawCreate(103.333282, 249.155563, "1");
    TextDrawLetterSize(capt9[playerid], 0.300667, 1.301333);
    TextDrawAlignment(capt9[playerid], 1);
    TextDrawColor(capt9[playerid], -2139062017);
    TextDrawSetShadow(capt9[playerid], 0);
    TextDrawSetOutline(capt9[playerid], 1);
    TextDrawBackgroundColor(capt9[playerid], 255);
    TextDrawFont(capt9[playerid], 2);
    TextDrawSetProportional(capt9[playerid], 1);

    capt10 = TextDrawCreate(93.999938, 261.355651, "10:00");
    TextDrawLetterSize(capt10, 0.300667, 1.301333);
    TextDrawAlignment(capt10, 1);
    TextDrawColor(capt10, -1378294017);
    TextDrawSetShadow(capt10, 0);
    TextDrawSetOutline(capt10, 1);
    TextDrawBackgroundColor(capt10, 255);
    TextDrawFont(capt10, 2);
    TextDrawSetProportional(capt10, 1);
    for(new i = 0; i < 100; i++)
    {
        GangZoneShowForPlayer(playerid, GZInfo[gID], GetGangZoneColor(i));
        if(BattleZone == true)
        {
            GangZoneFlashForPlayer(playerid,GZInfo[gID], GetGangZoneColor(GZInfo[gFrak]));
        }
    }
    return 1;
}

offban
CMD:offban(playerid, params[])
{
    AdminCommand(4);
    new nick,result[128],ip[16],data[16];
    if(sscanf(params, "s[32]s[60]", nick,result)) return SCM(playerid, COLOR_GREY, "Èñïîëüçóéòå: /offban [nick_name] [ïðè÷èíà]");
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(!mysql_fetch_row_format(query)) return SCM(playerid, -1, "Äàííûé àêêàóíò íå íàéäåí â áàçå äàííûõ!");
    format(query, sizeof(query), "SELECT * FROM `banlist` WHERE `Name` = '%s'", nick);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query) == 1) return SCM(playerid, -1, "Äàííûé àêêàóíò óæå íàõîäèòñÿ â áàíëèñòå!");
    GetPlayerName(nick, gp, sizeof(gp));
    GetPlayerIp(nick, ip, sizeof(ip));
    GetPlayerName(playerid, sn, sizeof(sn));
     new nsa[128];
    format(nsa,128,"Àäìèíèñòðàòîð %s[%d] çàáëîêèðîâàë àêêàóíò %s . Ïðè÷èíà: %s",sn, playerid, gp,result);
    SCMToAll(COLOR_LIGHTRED,nsa);
    new Hour, Minute, Second,Year, Month, Day;
    getdate(Year, Month, Day), gettime(Hour, Minute, Second);
    new slip[16];
    GetPlayerIp(playerid, slip, sizeof(slip));
    format(nsa, sizeof(nsa), "[IP: %s]",slip);
    SCM(playerid, COLOR_LIGHTRED,nsa);
    new unbandate = gettime() + 31*86400;
    format(data, 16, "%02d.%02d.%02d",Day,Month,Year);
    format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUE ('%s', '%s', '%i', '%s')",gp,data,unbandate,result);
    mysql_query(query);
    mysql_free_result();
    return 1;
}

 

 

нету в таблице mysql того кого я забанил

 

Заметка от odosenok , создано

3.2. Код больше 10 строк брать еще и под спойлер. Как это сделать рассказано в разделе "FAQ"

Устное предупреждение.

Share this post


Link to post
Share on other sites

так что ктото поможет?)

Share this post


Link to post
Share on other sites

LoadBanList(playerid)     

LoadBanIpList(playerid)

 

В студию

при выполнении команд "mysql_log" нет? таблица "banlist" есть в базе?

Share this post


Link to post
Share on other sites

@SCRIPTMAN,

LoadBanList(playerid)     

LoadBanIpList(playerid)

 

В студию

Вот это не понял.

Таблица есть

Share this post


Link to post
Share on other sites

@Pirat, вспомните телеперадачу "Поле чудес" с Леонидом Якубовичем. Как он говорил постоянно "В студию", чтобы какой-либо предмет (например, подарок для победителя) вынесли в зал съемок на публику, тем самым продемонстрировали предмет всем. Вот и на форумах так. Частенько можно услышать "в студию", что предполагает необходимость отправить что-либо (в данном случае код функций LoadBanList и LoadBanIpList).

 

Спойлер

Безымянный.png

 

Share this post


Link to post
Share on other sites
Спойлер

stock LoadBanIpList(playerid)
{
    new ip[16], endpos = 0;
    GetPlayerIp(playerid, ip, sizeof(ip));
    format(query, sizeof(query), "SELECT * FROM `baniplist` WHERE `IP` = '%s'", ip);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query))
    {
        SCM(playerid, COLOR_LIGHTRED,"Âàø IP çàáëîêèðîâàí!");
        Kicked(playerid);
        return 1;
    }
    mysql_free_result();
    //
    for(new i = 0; i < 2; i++)
    {
        endpos = strfind(ip, ".", true,endpos+1);
    }
    if(endpos != -1) strdel(ip, endpos, sizeof(ip));
    format(query, sizeof(query), "SELECT * FROM `baniplist` WHERE `IP` = '%s'", ip);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row_format(query))
    {
        SCM(playerid, COLOR_LIGHTRED, "Âàø IP àäðåñ çàáëîêèðîâàí!");
        Kicked(playerid);
        return 1;
    }
    mysql_free_result();
    return 1;
}

 

Спойлер

stock LoadBanList(playerid)
{
    new name[MAX_PLAYER_NAME], unbandate, dates[16],reason[128];
    new str[150],totalstr[600];
    GetPlayerName(playerid, sn, sizeof(sn));
    format(query, sizeof(query), "SELECT * FROM `banlist` WHERE `Name` = '%s'", sn);
    mysql_query(query);
    mysql_store_result();
    if(mysql_fetch_row(query) == 1)
    {
        mysql_fetch_row_format(query, "|");
        sscanf(query, "p<|>s[32]s[16]s[32]s[128]",name,dates,unbandate,reason);
        mysql_free_result();
        if(unbandate > gettime())
        {
            format(str, sizeof(str),"{FF6347}NICK:\t\t\t%s\n",name);
            strcat(totalstr, str);
            format(str, sizeof(str),"Äàòà áàíà:\t\t%s\n",dates);
            strcat(totalstr, str);
            format(str, sizeof(str),"Ïðè÷èíà:\t\t%s",reason);
            strcat(totalstr, str);
            SPD(playerid,0,DIALOG_STYLE_MSGBOX,"Áëîêèðîâêà",totalstr,"Çàêðûòü","");
            Kicked(playerid);
        }
        else
        {
            format(query, sizeof(query), "DELETE FROM `banlist` WHERE `Name` = '%s'",sn);
            mysql_query(query);
            SCM(playerid, COLOR_YELLOW, "Âàø àêêàóíò óñïåøíî {00FF00}ðàçáëîêèðîâàí!{33FFFF} Âû ìîæåòå ïðîäîëæèòü èãðó!");
        }
        mysql_free_result();
    }
    return 1;
}

 

 

Share this post


Link to post
Share on other sites

@Pirat Попробуйте заменить в команде /ban, вот эту строчку на мою. И зайдите в FileZilla, и скиньте нам строки из файла - mysql_log.txt

format(query, sizeof(query), "INSERT INTO `banlist` (`Name`, `Date`, `Unbandata`, `Reason`) VALUES ('%s', '%s', '%i', '%s')",gp,data,unbandate,params[2]);

Edited by Nekit_Krut18
Причина: Подправил.

Share this post


Link to post
Share on other sites

@Nekit_Krut18 А для чего тебе конфигурационный файл сервера понадобился, позволь поинтересоваться? :D

Share this post


Link to post
Share on other sites

@20th century Какой конфигурационные? Логи мускулы.?

Share this post


Link to post
Share on other sites

При вводе команды, говоришь, сервер останавливается? Подключи crashdetect, заново введи команду и покажи логи из файла server_log.txt.

В команде /offban по сути должна быть проверка на нахождение игрока онлайн, и вообще существование вводимого никнейма. У тебя же эта команда идентична с первой, непорядок.

При копировании участков кода из текстового редактора переключай раскладку на русский язык, дабы избежать кривого копирования кириллицы.

Покажи команду /iban если уверен, что она точно работает в отличии от твоих.

Share this post


Link to post
Share on other sites

@Nekit_Krut18, На что заменить? mysql после банов пуст

@20th century, У меня нету крашдетекта. КМД iban идет заспись в табл с аками в раздел iban. Кмд проверил работает отлично. А ban offban нет может и unban тоже

 

Спойлер

CMD:iban(playerid, params[])
{
    AdminCommand(5);
    if(sscanf(params,"is[60]",params[0], params[1]))return SCM(playerid, COLOR_GREY, "Используйте: /iban [id] [причина]");
    GPN
    GGGPN
    new nsa[120];
    format(nsa, sizeof(nsa), "Администратор %s[%d] навсегда заблокировал доступ игроку %s на сервер. Причина: %s", sn, playerid, gp, params[1]);
    SCMToAll(COLOR_LIGHTRED, nsa);
    info[params[0]][pIBAN] = 1;
    new ip[20];
    new n[65];
    GetPlayerIp(params[0], ip, sizeof(ip));
    format(n, sizeof(n), "[A] IP: [%s] REG-IP: [%s]", ip, info[params[0]][pRegIP]);
    SCMA(COLOR_LIGHTRED, n);
    Kicked(params[0]);
    return 1;
}

 

 

Share this post


Link to post
Share on other sites

Так..

В OnGameModeInit:

mysql_log(ALL);

 

Заходишь на сервер, и используешь команду /ban, после выходишь, mysql_log скидываешь нам сюда. И ещё, в таблице вообще появляется аккаунт игрока в списке забаненных или нет?

Share this post


Link to post
Share on other sites

@SCRIPTMAN, я проверял после бана пуст, нету в табл

Share this post


Link to post
Share on other sites

@Pirat включи логирование и сделай что я тебе сказал

Share this post


Link to post
Share on other sites
5 часов назад, SCRIPTMAN сказал:

@Pirat включи логирование и сделай что я тебе сказал

как включить логирование?

Share this post


Link to post
Share on other sites

@Pirat я писал выше. Посмотри.

Share this post


Link to post
Share on other sites

@SCRIPTMAN,

C:\Users\User\Desktop\gamemodes\dm.pwn(386) : error 017: undefined symbol "mysql_log"
Pawn compiler 3.2.3664              Copyright (c) 1997-2016, ITB CompuPhase


1 Error.
Ошибка

 

Share this post


Link to post
Share on other sites

@Pirat Попробуйте - 

mysql_log(LOG_ALL);

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Игорь5878
      By Игорь5878
      Продаётся оригинальный игровой мод проекта RakNet Role Play
      В моде присутствует множество уникальных систем например пару примеров: уникальная система крафта оружия/патронов, система чердаков, автосалонов.
      В продажу мода входит: Группа ВК проекта - vk.com/raknet_official Свободная группа - vk.com/raknet_fr
      Сайт/форум проекта - raknetrp.ru
      Цена на мод договорная. 
      Связаться со мной можете по ссылке во вконтактах группы, либо на форуме.
      Продаётся самая последняя версия мода - 2.2.3
    • Игорь5878
      By Игорь5878
      Оригинальный RakNet ONLINE
      Просмотр файла Продаётся оригинальный игровой мод проекта RakNet Role Play
      В моде присутствует множество уникальных систем например пару примеров: уникальная система крафта оружия/патронов, система чердаков, автосалонов.
      В продажу мода входит: Группа ВК проекта - vk.com/raknet_official Свободная группа - vk.com/raknet_fr
      Сайт/форум проекта - raknetrp.ru
      Цена на мод договорная. 
      Связаться со мной можете по ссылке во вконтактах группы, либо на форуме.
      Продаётся самая последняя версия мода - 2.2.3
      Добавил Игорь5878 Добавлено 19.04.2021 Категория Моды Автор Angel_  
    • odosenok
      By odosenok
      Описание системы.
      Система полета камерой представляет собой возможность перемещаться в пространстве игры по всем осям (X, Y, Z) путем нажатия кнопок на клавиатуре.
       
      Подключение системы.
      1. Система написана в отдельном файле - include. Вам необходимо скачать этот файл и добавить в папку, находящейся в следующей директории:
      "..\pawno\include" 2. Затем Вам следует открыть свой игровой мод и в начале, после всех инклудов, дописать следующую строку:
      #include <fly>  
      Работа с системой.
      В систему полета камерой включены две функции:
      1.
      SetPlayerFlyStatus(playerid, status = 2) /* playerid - ID игрока, которого Вы хотите "отправить" в режим полета status - режим полета* * предусмотрено три режима полета: CAMERA_MODE_NONE (0) - выключить режим полета, CAMERA_MODE_FLY (1) - включить режим полета, CAMERA_MODE_REVERSE (2) - сменить режим на реверсивный */ 2. 
      IsPlayerFlying(playerid) /* playerid - ID игрока, пребывание в состоянии полета которого Вы хотите проверить *данная функция возвращает: CAMERA_MODE_NONE (0), если игрок не находится в состоянии полета, CAMERA_MODE_FLY (1), если игрок находится в состоянии полета */ При помощи данных функций Вы можете управлять пребыванием игрока в режиме полета, а также получать информацию о том, "летает" ли игрок в тот или иной момент.
       
      Особенности системы.
      Системой полета предусмотрено, что игрок, выходящий из режима полета, появится именно там, где вышел. Так, если Вы покидаете режим полета, пребывая в озере, то появление игрока будет именно в этом озере.
       
      Пример использования.
      CMD:fly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /fly [mode 0-2]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new mode; if(sscanf(params, "d", mode)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(!(0 <= mode <= 2)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; SetPlayerFlyStatus(playerid, mode); return 1; } CMD:checkfly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /checkfly [playerid]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new id; if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, !"The player is not connected") & 0; static const status_fly[][] = { !"The player is not flying", !"The player is flying" }; SendClientMessage(playerid, -1, status_fly[IsPlayerFlying(id)]); return 1 } Авторское право.
      Функции для получения позиции для перемещения камеры, само перемещение вырезаны из разработки Norck.
      В свою очередь я, @odosenok, лишь преобразовал данный код, создал более удобный интерфейс.
       
      fly.inc
    • Drummer1993
      By Drummer1993
      Здравствуйте... не видно обичным игрокам Textdraws помогите куда этот код поставить ? при команде /sp видно.... нужно чтобы всегда было видно заранее спасибо