Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 6 из 6
  1. #1
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,441
    Репутация:
    261 ±

    Крашит список сотрудников

    Всем привет, уважаемый посетители Pro Pawn!
    И у меня опять проблема, крашит код при онлайне ~ 50 (краш детект). Ошибку не могу показать, так как команда за коментирована была после краша. Кому не сложно, предлагает оптимизированный варианты, скорее всего крашит иза того что в диалог не все влазят.
    PHP код:
        CMD:find(playeridparams[])
        {
            if(!
    GetPVarInt(playerid"Pvar_Loggin")) return SendClientMessage(playeridCOLOR_GRAD"Необходимо залогиниться!");
            if(
    CMD_Flood[playerid] == 1) return SendClientMessage(playeridCOLOR_GRAD"Не флудите!");
            new 
    listitems[512],string[1000];
            new 
    teamnumber BandFrak[playerid];
            foreach(new 
    iPlayer)
            {
                if(
    BandFrak[i] == teamnumber)
                {
                    
    format(stringsizeof(string), ""W"Nick: %s | Убийств: %d | Смертей: %d | Ранг: %s\n",NAME_REG[i], PlayerInfo[i][pKills],PlayerInfo[i][pDeath],RankName(i));
                    
    strcat(listitems,string,1000);
                    
    ShowPlayerDialog(playerid3000DIALOG_STYLE_MSGBOX"{ffcf00}Члены организации онлайн",  listitems"Закрыть""");
                    
    CMD_Flood[playerid] = 1;
                    
    SetTimerEx("@_Anti_Flood"2000true"i"playerid);
                }
            }
            
    SendClientMessage(playeridCOLOR_GRAD"Команда убрана на время тестов!");
            return 
    1;
        } 
    Заранее всем, спасибо! :)

  2. #2
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    Вставьте в main или в OnGameModeInit:
    PHP код:
    printf("Уровень дебаггинга: %i"debug); 
    И запустите мод.

    Если число равно нулю, подключите crashdetect: Тык.
    Если нет, - показывайте логи.

  3. #3
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,441
    Репутация:
    261 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Вставьте в main или в OnGameModeInit:
    PHP код:
    printf("Уровень дебаггинга: %i"debug); 
    И запустите мод.

    Если число равно нулю, подключите crashdetect: Тык.
    Если нет, - показывайте логи.
    Во общем, там ошибка выход за пределы массива. Не хочу подключать щяс онлайна 50 нету...
    Может свой вариант предложите?

  4. #4
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Во общем, там ошибка выход за пределы массива. Не хочу подключать щяс онлайна 50 нету...
    Может свой вариант предложите?
    Какой ещё вариант? Вы же сказали, что выход за пределы массива, получите строку, которая вызывает данную проблему, и нам кидайте, в эту тему.

  5. #5
    Аватар для Hidden
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    74
    Репутация:
    41 ±
    PHP код:
    format(stringsizeof(string), ""W"Nick: %s | Убийств: %d | Смертей: %d | Ранг: %s\n",NAME_REG[i], PlayerInfo[i][pKills],PlayerInfo[i][pDeath],RankName(i)); 
    strcat(listitems,string,1000); 
    Вы strcat неверно используете. Вы информацию об игроке записываете в string (format), и потом эту информацию записываете в listitems (strcat), притом что размер listitems меньше размера string.
    В общем, вместо new listitems[512],string[1000]; сделайте new listitems[1000], string[43+MAX_PLAYER_NAME+40];
    Либо, на мой взгляд, выводите не диалогом, а в чат, с помощью старой доброй SendClientMessage.
    Hidden (Kenny Hellwood)

    Темы:
    [Мануал] Система двигателя [for new.pwn] - click.
    [Мануал] Запись нескольких значений в один столбец через запятую [mysql r7] - click.
    [Мануал] Табличка на прицепы - click.
    [Info] Выражения и операторы PAWN - click.

  6. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Команда сама по себе неверно построена.
    PHP код:
    CMD:find(playeridparams[])
    {
        if(!
    GetPVarInt(playerid"Pvar_Loggin")) return SendClientMessage(playeridCOLOR_GRAD"Необходимо залогиниться!");
        if(
    CMD_Flood[playerid] == 1) return SendClientMessage(playeridCOLOR_GRAD"Не флудите!");
        new 
    string[2048];
        new 
    teamnumber BandFrak[playerid];
        foreach(new 
    iPlayer)
        {
            if(
    BandFrak[i] != teamnumber) continue;
            
    format(stringsizeof(string), "%s"W"Nick: %s | Убийств: %d | Смертей: %d | Ранг: %s\n",string,
                                                                                                    
    NAME_REG[i],
                                                                                                    
    PlayerInfo[i][pKills],
                                                                                                    
    PlayerInfo[i][pDeath],
                                                                                                    
    RankName(i));
        }
        
    ShowPlayerDialog(playerid3000DIALOG_STYLE_MSGBOX"{ffcf00}Члены организации онлайн",  listitems"Закрыть""");
        
    CMD_Flood[playerid] = 1;
        
    SetTimerEx("@_Anti_Flood"2000true"i"playerid);
        return 
    1;

    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •